; ___________________________________________________________________ ; / ________ \ ;| ** ** *** | | | ;| MMMM MMMM * *** * | Enter->| | ;| MMMMM MMMMM EE GGG AAAA * ** |________| | ;| MM MM MM MM E G A A ** || || | ;| MM MMMM MM EEE G GG AAAAAA * * _________ | ;| MM MM MM E G G A A ** __ _\_______\_ | ;| MM MM MM EE GGG A A ** / \ \-\-\____ | ;| * | () |_______________/ \_\ | ;| RRRRRR \__/ \_/ | ;| RR RR AAAA CCCC EE RRRR SSS | ;| RRRRRR A A C E R R S Mega Racers (c.) | ;| RR RR AAAAAA C EEE RRRR SS Will Stokes | ;| RR RR A A C E R R S Version U1.4 | ;| RR RR A A CCCC EE R R SSS July, 1997 | ;| | ;| Special Thanx to Brandon Luehrs for making the new intro screen! | ;|_____________________________________________________________________| ;| | ;| Will Stokes wstokes@geocities.com | ;| | ;| My Personal Homepage: http://www.uic.edu/~hhstokes/will.htm | ;| | ;| My Calculator Website: http://www.geocities.com/ | ;|(The TI-85 Calculator Center) SiliconValley/Pines/7360/ | ; \___________________________________________________________________/ ; ___________________________________________________________ ; / \ ;| BASIC STUFF YOU HAVE TO DO TO SETUP FILE/GAME STRUCTURE | ; \___________________________________________________________/ #include "USGARD.H" #include "SPRITLIB.H" #include "ZCPLIB.H" #include "USGDLIB.H" .org 0 .db "Mega Racers V U1.4", 0 ;<-----Name that appears on shell menu .db ZCPLIB,SPRITLIB,USGDLIB,0 ; ___________________________________________________ ; / \ ;| Set Variables and discribe what they are used for | ; \___________________________________________________/ HX = TEXT_MEM ; x value of point on horizen I = TEXT_MEM+3 ; value used to draw road outline endgame = TEXT_MEM+5 ;check bit for quiting sequence. endgame2 = TEXT_MEM+6 ;another check bit for quiting sequence. arg1 = TEXT_MEM+7 ;\ arg2 = TEXT_MEM+8 ; )---used in math routines at very bottom of prog. res1 = TEXT_MEM+9 ;/ temp1 = TEXT_MEM+10 ;\___Additional temp. space for storage. temp2 = TEXT_MEM+13 ;/ LOTS OF SPACE HERE temp3 = TEXT_MEM+16 temp4 = TEXT_MEM+17 temp5 = TEXT_MEM+18 ty = TEXT_MEM+19 ;<----ty=1 turn point on, else, turn point off. Way = TEXT_MEM+20 ;<-- used in line routine dist = TEXT_MEM+26 ;distnace in course mnts = TEXT_MEM+30 ; coordinate of mountains XRow = TEXT_MEM+31 ;used to get YCol = TEXT_MEM+33 ; stuff out of matrices XCor = TEXT_MEM+35 ;Used to draw stuff on the YCor = TEXT_MEM+37 ;side of road, i.e., signs, trees and lights. Car1 = TEXT_MEM+39 ; specifies the x-coordinate of car. Car2 = TEXT_MEM+42 ; specifies the dirrection of car (1=\ 2=^ 3=/) Car3 = TEXT_MEM+44 ; is there a crash? 1=No 2=Yes speed = TEXT_MEM+45 ; speed of car, 1=slow, 1000=fast speed2 = TEXT_MEM+47 ; speed of car, 1=slow, 1000=fast course = TEXT_MEM+52 ; which course, 1, 2, etc. cont = TEXT_MEM+55 Rank = TEXT_MEM+57 Lap = TEXT_MEM+59 power = TEXT_MEM+61 set_crash = TEXT_MEM+63 ; these two are used to set_crash2 = TEXT_MEM+65 ; show crashes and time, respectively. set_crash3 = TEXT_MEM+67 ; also used to time and show crash set_crash4 = TEXT_MEM+69 ; also used to time and show crash expr = TEXT_MEM+71 ;have you exploded? (died) tim1 = TEXT_MEM+73 ;\ tim2 = TEXT_MEM+74 ; \ tim3 = TEXT_MEM+75 ; \ tim4 = TEXT_MEM+76 ; \___All used for timers, see below.... tim5 = TEXT_MEM+87 ; / tim6 = TEXT_MEM+88 ; / tim7 = TEXT_MEM+89 ; / tim8 = TEXT_MEM+90 ;/ stime = TEXT_MEM+91 semi_time = TEXT_MEM+93 HiScoreTemp = Text_Mem+95 ;used for checking high-scores =) ;####################################################################### ;# # ;# TIMER EXPLANATION # ;# # ;####################################################################### ; ; Your basic time (track time that is culumative for entire race) ; consists of 6 digits. 6?! But I only see 4 on the screen? ; Well, two are hidden. It works like this: ; ; Time: ; 13:24 This is an example of what your time might be. ; tim1 is 1, tim2 is 3, tim3 is 2 and tim4 is 4. ; So what about the other four variables? ; Well there are two HIDDEN variables that are ;included on your time. They are set to a default (timer speed) and then ;counted down. Like a double digit number say 60. When both are zero the ;other digits in the timer are updated. Also, the other two digits in ;the count-down timer are updated. The countdown timer uses variables ;tim7 and tim8. The hidden variables (which are effectively working on ;both the track time and countdown time) are tim5 and tim6. Ok? :-) ; ;####################################################################### ; __________________________________________ ; / \ ;| SET FIRST VALUES OF VARIABLES AS NEEDED | ; \__________________________________________/ call &reseters ld a, 27 ld (I), a ld a, 1 ld (set_crash3), a ld (set_crash4), a ld (Rank), a ld (Lap), a ld (course), a ld (Car3), a ld (temp4), a ld (temp5), a ld (endgame), a ld (endgame2), a ld a, 63 ld (mnts), a ; ___________________________________________________________________ ; / \ ;| FIRST EXECUTION OF CODE........BEGIN GAME...THEN QUIT TO ZSHELL | ; \___________________________________________________________________/ ld a, 4 out (5), a ld hl, $8C40 set 0, (hl) ld hl, GRAPH_MEM LIB_CALL_(SPRITLIB,SET_DEST) call &Dimd call &intro1 tp1: call &Dimd call &intro call &mode call &Dimu call &t11 ld a, (endgame) cp 2 ret z call &slct tp2: ld a, (endgame) cp 2 ret z ld a, (endgame) cp 3 jr z, tp1 intro: call CLEARLCD ld hl, &PictureData LIB_CALL_(ZCPLIB,ZCP) ret intro1: call CLEARLCD ld hl, $1013 ld de, ln1 call &text2 ld hl, $1713 ld de, ln2 call &text2 ld hl, $1E13 ld de, ln3 call &text2 ld hl, $2513 ld de, ln4 call &text2 ld hl, $2C13 ld de, ln5 call &text2 call &Dimu call OTH_PAUSE ret reseters: ;reset a few thingies every time ld a, 2 ld (Car2), a ;2= ^ dirrection of car, duh! ld a, 1 ld (dist), a ld (set_crash), a ;1=no crash at beginning, duh! ld a, 64 ld (Car1), a ;x-coordinate of car, middle. call &set_d_timer ld a, 0 ld (tim1), a ld (tim2), a ld (tim3), a ld (tim4), a ret mode: ld a, (temp4) cp 1 call z,&dn ld a, (temp4) cp 2 call z,&dn2 ld a, (temp4) cp 3 call z,&dn3 ld a, 50 ld (temp1), a ld a, (temp3) ld (temp2), a call &block ret q3: call &quit call &select ret t11: call GET_KEY ;<----Get last keystroke. cp K_EXIT call z,&q3 cp K_UP call z,&up cp K_DOWN call z,&down cp K_ENTER call z,&select ld a, (temp5) cp 2 ret z jr t11 select: ld a, 2 ld (temp5), a ret up: ld a, (temp4) call &mode ld a, (temp4) dec a cp 0 call z,&x1 ld (temp4), a call &mode ret x1: ld a, 3 ret down: ld a, (temp4) call &mode ld a, (temp4) inc a cp 4 call z,&x2 ld (temp4), a call &mode ret x2: ld a, 1 ret dn: ld a, 18 ld (temp3), a ret dn2: ld a, 10 ld (temp3), a ret dn3: ld a, 2 ld (temp3), a ret block: ld a, (temp1) ld b, a ld a, (temp2) ld c, a call &ChangePixel ld a, (temp1) inc a ld (temp1), a cp 124 jr nz, block ld a, 50 ld (temp1), a ld a, (temp2) inc a ld (temp2), a ld a, (temp3) ld b, a ld a, (temp2) sub b cp 8 jr nz, block ret slct: ld a, (temp4) cp 3 call z,&quit ld a, (temp4) cp 2 call z,&highs ld a, (temp4) cp 1 call z,&g2 ret fnsh: ;ok, you finnished the course, now show stats at the end. call &Dimd call CLEARLCD ld hl, $0E2F ld de, end1 call &text2 ld hl, $1517 ld de, end2 call &text2 ld hl, $1C2D ld de, end3 call &text2 ld a, $24 ;y-coordinate ld ($8334), a ld a, $34 ld ($8333), a ld a, (tim1) add a, $30 call M_CHARPUT ld a, $24 ld ($8334), a ld a, $38 ld ($8333), a ld a, (tim2) add a, $30 call M_CHARPUT ld a, $24 ld ($8334), a ld a, $3C ld ($8333), a ld a, 10 add a, $30 call M_CHARPUT ld a, $24 ld ($8334), a ld a, $3F ld ($8333), a ld a, (tim3) add a, $30 call M_CHARPUT ld a, $24 ld ($8334), a ld a, $43 ld ($8333), a ld a, (tim4) add a, $30 call M_CHARPUT ld hl, $2B25 ld de, end4 call &text2 call &Dimu call OTH_PAUSE ;#################################################### ;# Routine used to see if you have a new best time! # ;#################################################### ld a, (course) dec a ;= 1? ld hl, &HiScore1 jr z, HiScoreHand ld hl, &HiScore2 ;----------------------------------------------------------------------------- ;Handle Hiscore | 12:34 1=digit #4 2=digit #3 3=digit #2 4=digit #1 ;----------------------------------------------------------------------------- HiScoreHand: ld (HiScoreTemp), hl ld a, (tim1) cp (hl) jr z, CheckNext1 ret nc jr c, New_High CheckNext1: inc hl ld a, (tim2) cp (hl) jr z, CheckNext2 ret nc jr c, New_High CheckNext2: inc hl ld a, (tim3) cp (hl) jr z, CheckNext3 ret nc jr c, New_High CheckNext3: inc hl ld a, (tim4) cp (hl) ret z ret nc New_High: ; <-- If you've gotten this far you got a new BEST TIME!!! ld hl, tim1 ld de, (HiScoreTemp) ld bc, 4 ldir ;################################################ ;# Yeah! New Best Time!!! Now enter your name!! # ;################################################ call CLEARLCD ld DE, $022D ld HL, &ED2 call &text3 ld DE, $0D12 call &text3 ld DE, $2021 call &text3 ld HL, $0705 ;this locatest the pointer on the ;screen.... ld ($800C), hl ld a, (course) dec a ld ix, &HiScrName1 jr z, HSH ld ix, &HiScrName2 HSH: ld C, 5 ld A, 00010000b ;* set cursor status LIB_CALL_(USGDLIB,INPST) ret text3: ld (CURSOR_X), DE call D_ZM_STR ret reset3: ld a, 4 ret quit: call CLEARLCD ld a, 2 ld (endgame), a ret q2: ld a, 3 ld (endgame), a ret highs: call &Dimd call CLEARLCD ld DE, $0E24 ld HL, &ED1 call &text3 ld DE, $2515 call &text3 ld DE, $2C15 call &text3 ld DE, $3827 call &text3 ld hl, $253B ld bc, &HiScore1 ;load BC with highscore1, and then always call &shwhgh ld DE, $2553 ld HL, &HiScrName1 call &text3 ld hl, $2C3B ld bc, &HiScore2 ;load BC with highscore1, and then always call &shwhgh ld DE, $2C53 ld HL, &HiScrName2 call &text3 call &Dimu call OTH_PAUSE ld a, 1 ld (temp5), a ld (endgame2), a call &q2 ret shwhgh: ld ($8333), hl ld a, (bc) inc bc add a, '0' call M_CHARPUT ld a, (bc) inc bc add a, '0' call M_CHARPUT ld a, ':' call M_CHARPUT ld a, (bc) inc bc add a, '0' call M_CHARPUT ld a, (bc) add a, '0' call M_CHARPUT ret g2: call &game call &q2 ld a, (Lap) cp 5 CALL_Z(fnsh) ret txtr: ld a, (course) cp 1 call z,&txtr1 ld a, (course) cp 2 call z,&txtr2 ret txtr2: ld hl, $3835 ld de, chicago call &text2 ret txtr1: ld hl, $3832 ld de, colorado call &text2 ret game: ;## call &reseters ;## game987: ;## call &Dimd ;## call CLEARLCD ;## call &update3 ;## call &txtr ;## ld hl, $0526 ;### ld de, pick ;#### call &text2 ;##### ld hl, $102D ;####### ld de, pick2 ;####### call &text2 ;##### call &Dimu ;## g2345: ;## call GET_KEY ;<----Get last keystroke. ;## cp K_ENTER ;## JUMP_Z(game236) ;## cp K_NOKEY ;## jr z, g2345 ;## ld c, 2 cp K_EXIT call z,&qT ld a, c cp 1 ret z ld a, (course) inc a ld (course), a cp 3 jr nz, game987 ld a, 1 ld (course), a jr game987 semip2: ld a, $FF ld b, $0B sep12: dec a jr nz, sep12 sep13: dec b jr nz, sep12 ret qT: ld a, 1 ld (temp5), a ld (endgame2), a ld c, 1 ret semip5: call &semip3 call &semip3 call &semip3 call &semip3 ret semip3: ld bc, 6000 sssp3: dec bc ld a, b or c jr nz, sssp3 ret Dimd: ld a, (CONTRAST) ld (cont), a dimd2: call &semip3 ld a, (CONTRAST) dec a ld (CONTRAST), a out (2), a cp 0 jr nz, dimd2 ret Dimu: call &semip3 ld a, (cont) ld e, a ld a, (CONTRAST) inc a ld (CONTRAST), a out (2), a cp e jr nz, Dimu ret rstsemi: ld a, 1 ld (semi_time), a ret set_d_timer: ld a, (course) ; cp 1 ; jr z, cr1 cp 2 jr z, cr2 ; cp 3 ; jr z, cr3 ; cp 4 ; jr z, cr4 ; cp 5 ; jr z, cr5 ; cp 6 ; jr z, cr6 cr1: ld a, 7 ld (tim7), a ld a, 1 ld (tim8), a ret cr2: ld a, 5 ld (tim7), a ld a, 10 ld (tim8), a ret ;cr3: ; ld a, 4 ; ld (tim7), a ; ld a, 5 ; ld (tim8), a ; ret ;cr4: ; ld a, 4 ; ld (tim7), a ; ld a, 5 ; ld (tim8), a ; ret ;cr5: ; ld a, 4 ; ld (tim7), a ; ld a, 5 ; ld (tim8), a ; ret ;cr6: ; ld a, 4 ; ld (tim7), a ; ld a, 5 ; ld (tim8), a ; ret ; _______________________________________________________ ; / \ ;| MAIN GAME LOOP........DRAW ROAD....MOVE CAR...QUIT | ; \_______________________________________________________/ game236: ld a, 6 ld (stime),a ld a, 0 ld (tim1), a ld (tim2), a ld (tim3), a ld (tim4), a ld a, (stime) ld (tim5), a call &set_d_timer ld a, 200 ld (speed), a ld a, 11 ld (power), a ld a, 1 ld (Lap), a ld (expr), a ld (set_crash), a ld (semi_time), a ld a, 2 ld (dist), a call &Dimd call &drawback2 call &update call &Dimu ld de, GRAPH_MEM ld hl, VIDEO_MEM ld bc, 1024 ldir call &getready ld hl, GRAPH_MEM ld de, VIDEO_MEM ld bc, 1024 ldir g3: ld a, (set_crash) cp 1 call z,&slide ; car will "slide" over on big turns ld a, (speed) srl a srl a cp 4 call nc,&reset3 ; you don't want the car to shoot off the screen ld (speed2), a call &getter call &update g4: call &update_times ld a, (expr) ;\ cp 1 ; >-quit if you have exploded ret nz ;/ ld a, (semi_time) inc a ld (semi_time), a cp 10 call z,&rstsemi call &getter ;<--Get feedback of what player wants to do. call &drawcar call &crasher call &drawroad call &showit call &data ; shows rank and lap #'s. ld a, (endgame2) ;\ cp $37 ; )---if "endgame" is $37 quit game. jr z, quitter ld a, (speed2) dec a ld (speed2), a cp 0 jr nz, g4 ld b, 5 ; \ ld a, (speed) ; >----- Slows down Car, better manuverability. add a, b ; / ld (speed), a ;/ cp 200 call nc,&tooslow ld a, 2 ;\__ Reset car posision so it is pointing up. ^ ld (Car2), a ;/ call &reloop quitter: ld a, (endgame2) ;\ cp $37 ; )---if "endgame" is $37 quit game. ret z ;/ (exit has been pressed) JUMP_(g3) ;<--Don't want to quit? Keep playing!! fxr2: ld a, 1 ret fxr3: call &set_d_timer ;reset count-down timer ld a, (Lap) inc a ld (Lap), a cp 5 call z,&end_game ld a, 1 ret end_game: ld a, 2 ld (expr), a ret stopper_ha: ld a, (dist) dec a ld (dist), a ret reloop: ld a, (dist) inc a ld (dist), a ld a, (set_crash) cp 1 call nz,&stopper_ha ld a, (course) cp 2 jr z, s2kp ld a, (dist) cp 218 call z,&fxr3 ; fixes it back to beginning ld (dist), a ret s2kp: ld a, (dist) cp 161 call z,&fxr3 ld (dist), a ret update_times: ;update ALL timers (variablewise... not on the screen) ld a, (tim4) inc a ld (tim4), a cp 10 call z,&fix_lp_time ld a, (tim5) dec a ld (tim5), a cp 0 ret nz ld a, (stime) ld (tim5), a ld a, (tim8) dec a ld (tim8), a cp 0 call z,&fix_cd_time ret fix_cd_time: ld a, (tim7) cp 0 call z,&no_time ld a, 10 ld (tim8), a ld a, (tim7) dec a ld (tim7), a ret fix_lp_time: ld a, 0 ld (tim4), a ld a, (tim3) inc a ld (tim3), a cp 10 ret nz ld a, 0 ld (tim3), a ld a, (tim2) inc a ld (tim2), a cp 10 ret nz ld a, 0 ld (tim2), a ld a, (tim1) inc a ld (tim1), a cp 10 call z,&no_time ;took too much time, do better!! ret no_time: ld a, 5 ld (expr), a ld hl, $101F ld de, otime call &text2 call &semip5 call &semip5 call &semip5 call &semip5 ret tooslow: ld a, 200 ld (speed), a ret okupme: ld b, 7 ld a, (speed) add a, b ld (speed), a ret data: ; routine used to display lap # and ranking in race. ld hl, $1E00 ld de, rank2 call &text2 ld hl, $2500 ld de, lap2 call &text2 ld a, $1E ld ($8334), a ld a, $14 ld ($8333), a ld a, (Rank) add a, $30 call M_CHARPUT ld a, $25 ld ($8334), a ld a, $0F ld ($8333), a ld a, (Lap) add a, $30 call M_CHARPUT ;NOW show count-down and race times! ld a, $2A ;y-coordinate ld ($8334), a ld a, $6E ;x-coordinate ld ($8333), a ld a, (tim1) add a, $30 call M_CHARPUT ld a, $2A ;y-coordinate ld ($8334), a ld a, $72 ;x-coordinate ld ($8333), a ld a, (tim2) add a, $30 call M_CHARPUT ld a, $2A ;y-coordinate ld ($8334), a ld a, $76 ;x-coordinate ld ($8333), a ld a, 10 add a, $30 call M_CHARPUT ld a, $2A ;y-coordinate ld ($8334), a ld a, $78 ;x-coordinate ld ($8333), a ld a, (tim3) add a, $30 call M_CHARPUT ld a, $2A ;y-coordinate ld ($8334), a ld a, $7C ;x-coordinate ld ($8333), a ld a, (tim4) add a, $30 call M_CHARPUT ld a, $30 ;y-coordinate ld ($8334), a ld a, $78 ;x-coordinate ld ($8333), a ld a, (tim7) add a, $30 call M_CHARPUT ld a, $30 ;y-coordinate ld ($8334), a ld a, $7C ;x-coordinate ld ($8333), a ld a, (tim8) dec a add a, $30 call M_CHARPUT ret reset: ld a, $37 ld (endgame2), a ret getter: ; Routine used to get and comprehend last ld e, 7 ld a, 0 ld (endgame2), a call OTH_ARROW and a ld d, a bit 6, d call z,&reset bit 7, d call z,&pause bit 3, d call z,&accel bit 5, d call z,&accel bit 0, d call z,&brake bit 1, d call z,&mleft bit 2, d call z,&mright ret pause: ld de, GRAPH_MEM ld hl, VIDEO_MEM ld bc, 1024 ldir ld hl, $112D ld de, paus call &text2 pause2: call OTH_PAUSE ld hl, GRAPH_MEM ld de, VIDEO_MEM ld bc, 1024 ldir ret mleft: ld a, (set_crash) ;\ cp 1 ; >---you can't move if you're burning!!! ret nz ;/ ld a, (Car2) dec a cp 1 call c,&ml2 ld (Car2), a ld a, 1 ld (Car2), a ld a, (Car1) dec a ld (Car1), a cp 40 call c,&righter ret righter: ld a, 40 ld (Car1), a call &slwer ret ml2: ld a, 1 ret mr2: ld a, 3 ret mright: ld a, (set_crash) ;\ cp 1 ; >---You can't move if you're burning!!! ret nz ;/ ld a, (Car2) inc a cp 3 call nc,&mr2 ld (Car2), a ld a, (Car1) inc a ld (Car1), a cp 82 call nc,&lefter ret lefter: ld a, 84 ld (Car1), a call &slwer ret slwer: ld a, (speed) add a, 20 ld (speed), a cp 200 call nc,&tooslow ret accel: ld a, e cp 7 ret nz ld e, 8 ld a, (set_crash) ;\ cp 1 ; >---You can't accelerate if you're burning! ret nz ;/ ld b, 6 ld a, (speed) sub b ld (speed), a add a, 10 cp 11 call c,&afix2 ret afix2: ld a, 1 ld (speed), a ret afix1: ld a, 1 ret brake: ld a, (set_crash) ;\ cp 1 ; >---You can't brake either when burning. ret nz ;/ ld b, 2 ld a, (speed) add a, b ld (speed), a cp 200 call nc,&tooslow ret update: call &clrmem call &drawroad ; draws the road call &drawback ; draws background call &drawstuff ; draws signs, lights, trees!!! call &drawcar ; draws your car DUH!!! call &drawmap ; draws the map of course and you on it!!!! call &drawroad ; fixes holes after other stuff has been drawn. call &crash ; not a crash yet, but look for one. call &crasher ; actually do the crash stuff... COOL!!! call &showit ; displays graphics call &data ; shows rank and lap #'s. ret clrmem: ld hl, GRAPH_MEM+352 ;/ ld (hl), 0 ; / ld d, h ; / ld e, l ; >--Clears Gram_mem to get rid of crap stuff. ld bc, 671 ; / inc de ; / ldir ;/ ret update3: call &clrmem ld b, 55 ld c, 30 ld a, (course) cp 1 call z,&drmap1 ld a, (course) cp 2 call z,&drmap2 LIB_CALL_(SPRITLIB,NASR WARP) ld d, 31 ld e, 53 ld h, 10 ld l, 53 call &Line ld d, 31 ld e, 54 ld h, 10 ld l, 54 call &Line ld d, 10 ld e, 55 ld h, 10 ld l, 79 call &Line ld d, 11 ld e, 55 ld h, 11 ld l, 79 call &Line call &showit ; displays graphics ret showit: ld hl, GRAPH_MEM+352 ld de, VIDEO_MEM+352 ld bc, 671 ldir ret end_crash: ld a, 1 ld (set_crash), a ld a, 2 ld (Car2), a ;2= ^ dirrection of car, duh! ld a, 64 ld (Car1), a ;x-coordinate of car, middle. ret crasher: ld a, (set_crash) cp 1 ret z ld a, (set_crash2) dec a ld (set_crash2), a cp 0 call z,&end_crash call &crash3 ret drawback2: ld c, 22 ld hl, &Back1 ld a, (course) cp 2 jr nz, skop ld hl, &Back2 skop: LIB_CALL_(ZCPLIB,ZCP) ld de, GRAPH_MEM ld hl, VIDEO_MEM ld bc, 1024 ldir ret ;########################################################### ;# Scrolling routines I got from Andreas Ess, thanx!! # ;# # ;########################################################### Scroll_Left: push af ld hl, VIDEO_MEM ld de, 15 ld bc, $1016 ; scroll the whole screen SL_Y_Loop: ld a, (hl) and 128 jr z, SL_PixDone scf SL_PixDone: push af add hl, de pop af SL_Loop: rl (hl) dec hl djnz SL_Loop add hl, de inc hl inc hl ld b, 16 dec c jr nz, SL_Y_Loop pop af ret ; ; ld bc, $1016 ;B=width of screen in 8 bit blcoks, c=height ; ;of background (mountains, etc.). Both in hex. Scroll_Right: push af ld hl, VIDEO_MEM+351 ;(end line-1)*16+15 ld de, -15 ld bc, $1016 SR_Y_Loop: ld a, (hl) and 1 jr z, SR_PixDone scf SR_PixDone: push af add hl, de pop af SR_Loop: rr (hl) inc hl djnz SR_Loop add hl, de dec hl dec hl ld b, 16 dec c jr nz, SR_Y_Loop pop af ret drmap1: ld hl, Map1 ld de, (PROGRAM_ADDR) add hl, de ret drmap2: ld hl, Map2 ld de, (PROGRAM_ADDR) add hl, de ret drawmap: ; Draws map of course and you on it!!! ld b, 0 ld c, 18 ld a, (course) cp 1 call z,&drmap1 ld a, (course) cp 2 call z,&drmap2 LIB_CALL_(SPRITLIB,NASR WARP) ; Map drawn, not get the coordinates of you on it..... ld a, (dist) ld (YCol), a ld a, 3 ld (XRow), a call &get_road ld (XCor), a ld a, (dist) ld (YCol), a ld a, 4 ld (XRow), a call &get_road ld (YCor), a ; Coordinates gotten, now draw a dot for where you are... ld a, (XCor) ld b, a ld a, (YCor) ld c, a dec b call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a dec b inc c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a dec b dec c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a inc b call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a inc b inc c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a inc b dec c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a inc c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a dec c call &Pon ld a, (XCor) ld b, a ld a, (YCor) ld c, a call &Poff ; Map drawn... dot for you it drawn...good job, now continue play. call &draw_speed ret draw_speed: ;draws speed and shows your energy ld hl, spedom ld de, (PROGRAM_ADDR) add hl, de ld b, 114 ld c, 30 LIB_CALL_(SPRITLIB,NASR WARP) ld a, 115 ld (temp1), a ld a, (power) cp 1 call nc,&up_it cp 2 call nc,&up_it cp 3 call nc,&up_it cp 4 call nc,&up_it cp 5 call nc,&up_it cp 6 call nc,&up_it cp 7 call nc,&up_it cp 8 call nc,&up_it cp 9 call nc,&up_it cp 10 call nc,&up_it ; no show power ld d, 24 ld e, 115 ld a, (temp1) ld l, a ld h, 24 call &Line ld d, 23 ld e, 115 ld a, (temp1) ld l, a ld h, 23 call &Line ret up_it: ld a, (temp1) inc a ld (temp1), a ld a, (power) ret slide: ld c, 0 call &hxr ld a, (HX) cp 59 jr c, lss ld a, (HX) cp 67 jr c, rbot ld c, 1 ld a, (HX) cp 81 jr c, rbot ld c, 2 cp 95 jr c, rbot ld c, 4 rbot: ld a, (Car1) sub c ld (Car1), a ret lss: ld c, 1 ld a, (HX) cp 45 jr nc, lbot ld c, 2 ld a, (HX) cp 31 jr nc, lbot ld c, 4 lbot: ld a, (Car1) add a, c ld (Car1), a ret getready: ; Gentlemen, START YOUR ENGINES!!!! ld hl, $1133 ld de, red1 call &text2 call &semip call &semip call &semip call &semip ld hl, $1133 ld de, red2 call &text2 call &semip call &semip call &semip call &semip ld hl, $1133 ld de, red3 call &text2 call &semip ret crash: ld a, (Car1) cp 42 call c,&crash2 ld a, (Car1) cp 82 call nc,&crash2 ; WELL, if you have made it this far..good job!! No crash!! ret semip: ld a, $FF ld b, $FF sep1: dec a jr nz, sep1 sep2: dec b jr nz, sep1 ret explosion1: call &reset ld hl, $101F ld de, rbad call &text2 ld a, 60 ld (set_crash2), a ld a, 2 ld (set_crash), a exptp: call &crash3 call &showit call &semip3 ld a, (set_crash2) dec a ld (set_crash2), a cp 0 jr nz, exptp ;ok, now show exploding car!!!!! ld b, 12 ld a, (Car1) sub b ld b, a ld c, 17 ld hl, blp1 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) call &showit call &semip5 ld b, 13 ld a, (Car1) sub b ld b, a ld c, 21 ld hl, blp2 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) call &showit call &semip5 ld b, 13 ld a, (Car1) sub b ld b, a ld c, 23 ld hl, blp3 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) call &showit call &semip5 ld b, 14 ld a, (Car1) sub b ld b, a ld c, 20 ld hl, blp4 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) call &showit call &semip5 ;HAHAHAHAHAHAHAHA!!!! You're DEAD!!!!!! ld a, 1 ld (set_crash), a ld a, 1 ld (set_crash2), a call &reseters ld a, $37 ld (endgame2), a ld a, 2 ld (expr), a ret crash2: ;UH OH!! You crash!!! HA HA HA HA!!!!!! ld a, 200 ld (speed), a ld a, (set_crash) cp 2 jr z, skip_this ld a, (power) dec a dec a dec a ld (power), a ld a, 50 ld (set_crash2), a ld a, 2 ld (set_crash), a ld a, (power) inc a cp 1 call c,&explosion1 ;no power=you EXPLODE!!!!!!! skip_this: ; hey, otherwise it is really easy to die, TOO HARD. ret fxcrash: ld a, 1 ld (set_crash3), a ret crash3: ld a, (set_crash3) cp 1 jr z, csh1 cp 2 jr z, csh2 cp 3 jr z, csh1 cp 4 jr z, csh2 cp 5 jr z, csh3 cp 6 jr z, csh2 cp 7 jr z, csh3 cp 8 jr z, csh2 csh4: ld a, (set_crash4) inc a ld (set_crash4), a cp 4 jr nz, skpcsh ld a, 1 ld (set_crash4), a ld a, (set_crash3) inc a ld (set_crash3), a cp 9 call z,&fxcrash skpcsh: ret csh1: ld b, 5 ld a, (Car1) sub b ld b, a ld c, 10 ld hl, exp1 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) jr csh4 csh2: ld b, 5 ld a, (Car1) sub b ld b, a ld c, 10 ld hl, exp2 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) jr csh4 csh3: ld b, 5 ld a, (Car1) sub b ld b, a ld c, 10 ld hl, exp3 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) jr csh4 drawcar: ld b, 5 ld a, (Car1) sub b ld b, a ld c, 10 ld a, (Car2) cp 1 jr z, drlf cp 2 jr z, drcn cp 3 jr z, drrt drlf: ld hl, c1 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) ret drcn: ld hl, c2 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) ret drrt: ld hl, c3 ld de, (PROGRAM_ADDR) add hl, de LIB_CALL_(SPRITLIB,NASR WARP) ret ;##################################################################### ;# # ;# The MOST complicated part of the program, the routine that draws # ;# the stuff along the side of the road (also checkpoints in v. 1.03 # ;# # ;##################################################################### drawstuff: call &drwleft ; draws stuff on the left. call &drwright ; draws stuff on the right. ret ; returns, stuff (signs) now drawn. drwleft: ; subrotine used to draw stuff on the left side of road. ld a, 0 ld (XRow), a ld a, 3 ld (temp1), a call &lookleft ld a, 0 ld (XRow), a ld a, 2 ld (temp1), a call &lookleft ld a, 0 ld (XRow), a ld a, 1 ld (temp1), a call &lookleft ld a, 0 ld (XRow), a ld (temp1), a call &lookleft ret uhoh: ld a, (temp1) cp 3 ret z jr uhoh2 lookleft: ; looks at certain part of left side of road (XRow, YCol) ld a, (temp1) ld b, a ld a, (dist) add a, b ld (YCol), a call &get_road ld (HX), a ;HX now contains value of what is at part of road. cp 0 ret z ; if nothing is there, why waste time??? cp 1 jr z, uhoh uhoh2: ld a, (HX) cp 1 call z,&drsign ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree ; it's a tree, draw it!!!! ld a, (HX) cp 4 call z,&dr_check ; it's a checkpoint, draw it! (new in v 1.03) ;################################### ;# YCor found, now find XCor!!!!!! # ;################################### call &findleft ; finds from left to right, XCor. ld a, (temp2) ld (XCor), a ;################################################### ;# Now off-set XCor so its seperated from the road # ;################################################### ld a, (HX) cp 1 call z,&drsign2 ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight2 ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree2 ; it's a tree, draw it!!!! ;######################################## ;# XCor and YCor now set, DRAW IT!!!!!! # ;######################################## ld a, (HX) cp 1 call z,&drsign3 ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight3 ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree3 ; it's a tree, draw it!!!! ld a, (HX) cp 4 call z,&dr_check2 ; it's a checkpoint, draw it!!! (v. 1.03+) ;############################################## ;# Stuff in this posision now drawn... Yes!!! # ;############################################## ret dr_check2: ; routine that actually draws the checkpoint ld a, (temp1) ;how far in distance cp 1 call z,&fxck1 cp 2 call z,&fxck2 cp 3 call z,&fxck3 ret fxck1: ld hl, cp11 ld de, (PROGRAM_ADDR) add hl, de ld a, 36 ld (XCor), a ld a, 32 ld (YCor), a call &otherfix ;yeah, converts xcor and ycor to b and c, nice ; job Will! LIB_CALL_(SPRITLIB,NASR WARP) ld a, (XCor) ld b, a ld a, 32 add a, b ld (XCor), a ld hl, cp12 ld de, (PROGRAM_ADDR) add hl, de call &otherfix LIB_CALL_(SPRITLIB,NASR WARP) ld e, 36 ld d, 24 ld l, e ld h, 0 call &Line ld e, 40 ld d, 24 ld l, e ld h, 0 call &Line ld e, 85 ld d, 24 ld l, e ld h, 0 call &Line ld e, 89 ld d, 24 ld l, e ld h, 0 call &Line ret fxck2: ld hl, cp2 ld de, (PROGRAM_ADDR) add hl, de ld a, 33 ld (YCor), a ld a, (XCor) ld b, 9 sub b ld (XCor), a call &otherfix ;yeah, converts xcor and ycor to b and c, nice ; job Will! LIB_CALL_(SPRITLIB,NASR WARP) ld a, (XCor) ld e, a ld d, 28 ld l, e ld h, 20 call &Line ld a, (XCor) ld b, 3 add a, b ld e, a ld d, 28 ld l, e ld h, 20 call &Line ld a, (XCor) ld b, 35 add a, b ld e, a ld d, 28 ld l, e ld h, 20 call &Line ld a, (XCor) ld b, 38 add a, b ld e, a ld d, 28 ld l, e ld h, 20 call &Line ret fxck3: ld hl, cp3 ld de, (PROGRAM_ADDR) add hl, de ld a, 39 ld (YCor), a ld a, 49 ld (XCor), a call &otherfix ;yeah, converts xcor and ycor to b and c, nice LIB_CALL_(SPRITLIB,NASR WARP) ld a, (XCor) ld e, a ld d, 37 ld l, e ld h, 31 call &Line ld a, (XCor) ld e, a inc e inc e ld d, 37 ld l, e ld h, 31 call &Line ld b, 23 ld a, (XCor) add a, b ld e, a ld d, 37 ld l, e ld h, 31 call &Line ld b, 25 ld a, (XCor) add a, b ld e, a ld d, 37 ld l, e ld h, 31 call &Line ret drsign3: ld a, 13 ld (YCor), a ld hl, s1 ld a, (temp1) cp 1 call z,&fxsn1 cp 2 call z,&fxsn2 ld de, (PROGRAM_ADDR) add hl, de call &otherfix LIB_CALL_(SPRITLIB,NASR WARP) ret fxsn1: ld hl, s2 ld a, 31 ld (YCor), a ret fxsn2: ld hl, s3 ld a, 39 ld (YCor), a ret drlight3: ld hl, l1 ld a, 26 ld (YCor), a ld a, (temp1) cp 1 call z,&fxli1 cp 2 call z,&fxli2 cp 3 call z,&fxli3 ld de, (PROGRAM_ADDR) add hl, de call &otherfix LIB_CALL_(SPRITLIB,NASR WARP) ret fxli1: ld hl, l2 ld a, 33 ld (YCor), a ret fxli2: ld hl, l3 ld a, 35 ld (YCor), a ret fxli3: ld hl, l4 ld a, 38 ld (YCor), a ret drtree3: ld hl, t1 ld a, 17 ld (YCor), a ld a, (temp1) cp 1 call z,&fxtr1 cp 2 call z,&fxtr2 cp 3 call z,&fxtr3 ld de, (PROGRAM_ADDR) add hl, de call &otherfix LIB_CALL_(SPRITLIB,NASR WARP) ret fxtr1: ld hl, t2 ld a, 31 ld (YCor), a ret fxtr2: ld hl, t3 ld a, 35 ld (YCor), a ret fxtr3: ld hl, t4 ld a, 38 ld (YCor), a ret otherfix: ; converts XCor and YCor to b and c ld a, (XCor) ld b, a ld a, (YCor) ld c, a ret missmap: ld a, 25 ld (temp2), a ret findleft: ld a, 0 ld b, a ld (temp2), a ld a, (temp1) cp 0 call z,&missmap ld a, (YCor) ld c, a ld (temp3), a fp1: ld a, (temp2) ld b, a ld a, (temp3) ld c, a ROM_CALL(FIND_PIXEL) ld de, GRAPH_MEM add hl, de and (hl) ret nz ; There is a pixel? Ok, now return. fp2: ld a, (temp2) inc a ld (temp2), a jr fp1 drsign2: ; offset the XCor ACCORDINGLY!!!!!! ld b, 17 ld a, (XCor) sub b ld (XCor), a ld a, (temp1) cp 1 call z,&sgn11 cp 2 call z,&sgn12 ret sgn11: ld b, 8 ld a, (XCor) add a, b ld (XCor), a ret sgn12: ld b, 10 ld a, (XCor) add a, b ld (XCor), a ret drtree2: ; offset the XCor ACCORDINGLY!!!!!! ld b, 16 ld a, (XCor) sub b ld (XCor), a ld a, (temp1) cp 1 call z,&tre11 cp 2 call z,&tre12 cp 3 call z,&tre13 ret tre11: ld b, 5 ld a, (XCor) add a, b ld (XCor), a ret tre12: ld b, 9 ld a, (XCor) add a, b ld (XCor), a ret tre13: ld b, 13 ld a, (XCor) add a, b ld (XCor), a ret drlight2: ; offset the XCor ACCORDINGLY!!!!!! ld b, 13 ld a, (XCor) sub b ld (XCor), a ld a, (temp1) cp 1 call z,&tre11 cp 2 call z,&lig12 cp 3 call z,&lig13 ret lig11: ld a, (XCor) inc a ld (XCor), a ret lig12: ld b, 6 ld a, (XCor) add a, b ld (XCor), a ret lig13: ld b, 8 ld a, (XCor) add a, b ld (XCor), a ret drsign: ; draws sign on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&sgn2 cp 2 call z,&sgn3 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret sgn2: ld a, 26 ld (YCor), a ret sgn3: ld a, 37 ld (YCor), a ret dr_check: ; draws checkpoint at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 0 ld (YCor), a ld a, (temp1) cp 1 call z,&chk2 cp 2 call z,&chk3 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret chk2: ld a, 19 ld (YCor), a ret chk3: ld a, 30 ld (YCor), a ret drlight: ; draws light on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&lgt2 cp 2 call z,&lgt3 cp 3 call z,&lgt4 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret lgt2: ld a, 22 ld (YCor), a ret lgt3: ld a, 29 ld (YCor), a ret lgt4: ld a, 35 ld (YCor), a ret drtree: ; draws tree on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&tre2 cp 2 call z,&tre3 cp 3 call z,&tre4 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret tre2: ld a, 26 ld (YCor), a ret tre3: ld a, 32 ld (YCor), a ret tre4: ld a, 37 ld (YCor), a ret drwright: ; subrotine used to draw stuff on the right side of road. ld a, 2 ld (XRow), a ld a, 3 ld (temp1), a call &lookrigt ld a, 2 ld (XRow), a ld a, 2 ld (temp1), a call &lookrigt ld a, 2 ld (XRow), a ld a, 1 ld (temp1), a call &lookrigt ld a, 2 ld (XRow), a ld a, 0 ld (temp1), a call &lookrigt ret uhoh3: ld a, (temp1) cp 3 ret z jr uhoh4 lookrigt: ; looks at certain part of left side of road (XRow, YCol) ld a, (temp1) ld b, a ld a, (dist) add a, b ld (YCol), a call &get_road ld (HX), a ;HX now contains value of what is at part of road. cp 0 ret z ; if nothing is there, why waste time??? cp 1 jr z, uhoh3 uhoh4: ld a, (HX) cp 1 call z,&drsign9 ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight9 ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree9 ; it's a tree, draw it!!!! ;################################### ;# YCor found, now find XCor!!!!!! # ;################################### call &findrigt ; finds from left to right, XCor. ld a, (temp2) ld (XCor), a ;################################################### ;# Now off-set XCor so its seperated from the road # ;################################################### ld a, (HX) cp 1 call z,&drsign29 ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight29 ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree29 ; it's a tree, draw it!!!! ;######################################## ;# XCor and YCor now set, DRAW IT!!!!!! # ;######################################## ld a, (HX) cp 1 call z,&drsign39 ; it's a sign, draw it!! ld a, (HX) cp 2 call z,&drlight39 ; it's a light, draw it!!! ld a, (HX) cp 3 call z,&drtree39 ; it's a tree, draw it!!!! ;############################################## ;# Stuff in this posision now drawn... Yes!!! # ;############################################## ret drsign39: ld a, 13 ld (YCor), a ld hl, s1 ld a, (temp1) cp 1 call z,&fxsn19 cp 2 call z,&fxsn29 ld de, (PROGRAM_ADDR) add hl, de call &otherfix9 LIB_CALL_(SPRITLIB,NASR WARP) ret fxsn19: ld hl, s2 ld a, 31 ld (YCor), a ret fxsn29: ld hl, s3 ld a, 39 ld (YCor), a ret drlight39: ld hl, l1 ld a, 26 ld (YCor), a ld a, (temp1) cp 1 call z,&fxli19 cp 2 call z,&fxli29 cp 3 call z,&fxli39 ld de, (PROGRAM_ADDR) add hl, de call &otherfix9 LIB_CALL_(SPRITLIB,NASR WARP) ret fxli19: ld hl, l2 ld a, 33 ld (YCor), a ret fxli29: ld hl, l3 ld a, 35 ld (YCor), a ret fxli39: ld hl, l4 ld a, 38 ld (YCor), a ret drtree39: ld hl, t1 ld a, 17 ld (YCor), a ld a, (temp1) cp 1 call z,&fxtr19 cp 2 call z,&fxtr29 cp 3 call z,&fxtr39 ld de, (PROGRAM_ADDR) add hl, de call &otherfix9 LIB_CALL_(SPRITLIB,NASR WARP) ret fxtr19: ld hl, t2 ld a, 31 ld (YCor), a ret fxtr29: ld hl, t3 ld a, 35 ld (YCor), a ret fxtr39: ld hl, t4 ld a, 38 ld (YCor), a ret otherfix9: ; converts XCor and YCor to b and c ld a, (XCor) ld b, a ld a, (YCor) ld c, a ret findrigt: ld a, 126 ld b, a ld (temp2), a ld a, (YCor) ld c, a ld (temp3), a fp19: ld a, (temp2) ld b, a ld a, (temp3) ld c, a call FIND_PIXEL ld de, GRAPH_MEM add hl, de and (hl) ret nz ; There is a pixel? Ok, now return. fp29: ld a, (temp2) dec a ld (temp2), a jr fp19 drsign29: ; offset the XCor ACCORDINGLY!!!!!! ld b, 20 ld a, (XCor) add a, b ld (XCor), a ld a, (temp1) cp 1 call z,&sgn119 cp 2 call z,&sgn129 ret sgn119: ld b, 6 ld a, (XCor) sub b ld (XCor), a ret sgn129: ld b, 10 ld a, (XCor) sub b ld (XCor), a ret drtree29: ; offset the XCor ACCORDINGLY!!!!!! ld b, 18 ld a, (XCor) add a, b ld (XCor), a ld a, (temp1) cp 1 call z,&tre119 cp 2 call z,&tre129 cp 3 call z,&tre139 ret tre119: ld b, 5 ld a, (XCor) sub b ld (XCor), a ret tre129: ld b, 9 ld a, (XCor) sub b ld (XCor), a ret tre139: ld b, 13 ld a, (XCor) sub b ld (XCor), a ret drlight29: ; offset the XCor ACCORDINGLY!!!!!! ld b, 13 ld a, (XCor) add a, b ld (XCor), a ld a, (temp1) cp 1 call z,&tre119 cp 2 call z,&lig129 cp 3 call z,&lig139 ret lig119: ld a, (XCor) dec a ld (XCor), a ret lig129: ld b, 6 ld a, (XCor) sub b ld (XCor), a ret lig139: ld b, 8 ld a, (XCor) sub b ld (XCor), a ret drsign9: ; draws sign on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&sgn29 cp 2 call z,&sgn39 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret sgn29: ld a, 26 ld (YCor), a ret sgn39: ld a, 37 ld (YCor), a ret drlight9: ; draws light on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&lgt29 cp 2 call z,&lgt39 cp 3 call z,&lgt49 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret lgt29: ld a, 22 ld (YCor), a ret lgt39: ld a, 29 ld (YCor), a ret lgt49: ld a, 35 ld (YCor), a ret drtree9: ; draws tree on left side of road at right place ; gets right YCor (primary)-->Puts in YCor. ld a, 4 ld (YCor), a ld a, (temp1) cp 1 call z,&tre29 cp 2 call z,&tre39 cp 3 call z,&tre49 ;############################################## ;# YCor to begin checking has been set. Yes!! # ;############################################## ret tre29: ld a, 26 ld (YCor), a ret tre39: ld a, 32 ld (YCor), a ret tre49: ld a, 37 ld (YCor), a ret ;########################################################### check34: ld a, (mnts) cp 0 call c,&adder2 ld a, (mnts) cp 128 call nc,&subber2 ret adder2: ld b, 128 ld a, (mnts) add a, b ld (mnts), a ret subber2: ld b, 128 ld a, (mnts) sub b ld (mnts), a ret drawback: ; draws cool mountains in background!! call &hxr ld (HX), a ; value of road is now stored in temp1 ld c, 0 call &sliders ; ok, mountains are now slid, DRAW THEM!!! call &check34 ret sliders: ; cool tv show so I used the name here...hehehe ld a, (set_crash) ;\ cp 1 ; >---if your burning don't scroll mountains ret nz ;/ ld c, 0 ld a, (HX) cp 59 jr c, lss2 ld a, (HX) cp 67 jr c, rbot2 ld c, 2 ld a, (HX) cp 72 jr c, rbot2 ld c, 3 ld a, (HX) cp 82 jr c, rbot2 ld c, 6 ld a, (HX) cp 102 jr c, rbot2 ld c, 8 rbot2: ld a, c ld (temp5), a rbot3: ld a, (temp5) cp 0 ret z call &Scroll_Left ld a, (temp5) dec a ld (temp5), a jr rbot3 lss2: ld c, 2 ld a, (HX) cp 54 jr nc, lbot2 ld c, 3 ld a, (HX) cp 44 jr nc, lbot2 ld c, 6 ld a, (HX) cp 24 jr nc, lbot2 ld c, 8 lbot2: ld a, c ld (temp5), a lbot3: ld a, (temp5) cp 0 ret z call &Scroll_Right ld a, (temp5) dec a ld (temp5), a jr lbot3 drawroad: ; Routine used to draw road on screen. call &hxr ; get value of road (point on horizen) ld a, (HX) dec a dec a ld (HX), a call &drd ld a, (HX) inc a inc a inc a inc a ld (HX), a call &drd2 ret hxr: ld a, (dist) ld (YCol), a ld a, 1 ld (XRow), a call &get_road ld (HX), a ret drd: ; routine that actually draws the road. ld a, (HX) cp 40 call nc,&d1 ld a, (HX) cp 40 call c,&d2 ret d1: ld d, 0 ld e, 40 ld b, 40 ld a, (HX) sub b SRL A ld b, a ld a, 40 add a, b ld (temp2), a ld l, a ld a, (I) ld h, a call &Line ld h, 42 ld a, (HX) ld l, a ld a, (temp2) ld e, a ld a, (I) ld d, a call &Line ret d2: ld d, 0 ld e, 40 ld a, (HX) ld b, a ld a, 40 sub b SRL A ld b, a ld a, (HX) add a, b ld (temp2), a ld l, a ld a, (I) ld h, a call &Line ld a, (temp2) ld e, a ld a, (I) ld d, a ld a, (HX) ld l, a ld h, 42 call &Line ret ; Return to basic game stem after road has been drawn. drd2: ; routine that actually draws the road. ld a, (HX) cp 86 call nc,&d3 ld a, (HX) cp 86 call c,&d4 ret d3: ld d, 0 ld e, 86 ld b, 86 ld a, (HX) sub b SRL A ld b, a ld a, 86 add a, b ld (temp2), a ld l, a ld a, (I) ld h, a call &Line ld h, 42 ld a, (HX) ld l, a ld a, (temp2) ld e, a ld a, (I) ld d, a call &Line ret d4: ld d, 0 ld e, 86 ld a, (HX) ld b, a ld a, e sub b SRL A ld b, a ld a, (HX) add a, b ld (temp2), a ld l, a ld a, (I) ld h, a call &Line ld a, (temp2) ld e, a ld a, (I) ld d, a ld a, (HX) ld l, a ld h, 42 call &Line ret ; Return to basic game stem after road has been drawn. ; Optimized Implementation of Bresenham's line algorithm ; by Stephane JANTZEN (Stephane.Jantzen@scinfo.u-nancy.fr) Line: ld A,D sub H jr NC,DXPositive ;delta_x > 0 DXNegative: neg DXPositive: ld B,A ;B <- |delta_x| ld A,E sub L jr NC,DYPositive ;delta_y > 0 DYNegative: neg DYPositive: sub B ;|delta_y| push AF jr C,DeltaX ;|delta_x| > |delta_y| DeltaY: ld A,H ;if |delta_x| < |delta_y| then ld H,L ;then values x and y are swapped ld L,A ;so the loop will always be performed on the ld A,D ;x value. A flag must be set to ld D,E ;remind that data must be drawn (y,x) ld E,A ;instead of (x,y) DeltaX: ld A,D sub H jr NC,TestDY ;x1 < x2 TestDX: ex DE,HL TestDY: ld A,E sub L ld A,$01 jr NC,StoreA neg ;y1 > y2 : in case2 the 'y' variable StoreA: ld (Way),A InitLine: ld B,H ld C,L ld A,E sub L jr NC,EndInit ld A,L ld L,E ld E,A EndInit: ld A,E sub L rla ld L,A ;value to add in case1 (d < 0) add A,H sub D ld E,A ;'d' variable is initialised add A,H sub D ld H,A ;value to add in case2 (d >= 0) Loop: ld A,B sub D jr NC,EndLine ;the line is completely drawn. pop AF ;ld A,(Flag) bit 7,A push AF push AF push BC jr Z,DrawPoint ld A,B ld B,C ld C,A DrawPoint: call &PointOn pop BC pop AF TestD: bit 7,E jr NZ,Case1 Case2: ;d >= 0 ld A,E add A,H ld E,A ld A,(Way) add A,C ld C,A jr EndLoop Case1: ;d < 0 ld A,E add A,L ld E,A EndLoop: inc B jr Loop EndLine: pop AF ;MUST NOT BE REMOVED ret PointOn: push DE ;MUST NOT BE REMOVED push HL ;MUST NOT BE REMOVED call FIND_PIXEL ld DE,GRAPH_MEM add HL,DE or (HL) ld (HL),A pop HL ;MUST NOT BE REMOVED pop DE ;MUST NOT BE REMOVED ret SetPixel: ld a, (ty) cp 1 jr z, Pon jr Poff Pon: call FIND_PIXEL ld de,GRAPH_MEM add hl,de or (hl) ld (hl),a ret Poff: call FIND_PIXEL ld de,GRAPH_MEM add hl,de xor 255 and (hl) ld (hl),a ret ChangePixel: call FIND_PIXEL ld de, VIDEO_MEM add hl, de xor (hl) ld (hl), a ret ;################################################################# ;# # ;# Get info from course matrix routine Thanx Andreas Ess # ;# # ;################################################################# crs1: ld a, (YCol) cp 218 jr c, skpt1 ld b, 217 sub b ld (YCol), a skpt1: ld hl, &course1 ret crs2: ld a, (YCol) cp 162 jr c, skpt2 ld b, 160 sub b ld (YCol), a skpt2: ld hl, &course2 ret get_road: ld a, (course) cp 1 call z,&crs1 ld a, (course) cp 2 call z,&crs2 ld a, (YCol) and a jr z, FirstLine ld b, a ld de, 5 Looper: add hl, de djnz Looper FirstLine: ld a, (XRow) ld e, a add hl, de ld a, (hl) ret text2: ; simple routine I made to draw menutext. HL=Y,X DE=string ld ($8333), hl ld hl, (PROGRAM_ADDR) add hl, de call D_ZM_STR ret ;################################################################### ;# Couple of strings used in the game for startup and other stuff. # ;################################################################### ln1: .db "Mega Racers Version U1.4",0 ln2: .db "Copyright July, 1997",0 ln3: .db "A Global Games Production",0 ln4: .db "Will Stokes",0 ln5: .db "wstokes@geocities.com",0 red1: .db " Ready! ",0 red2: .db " Set! ",0 red3: .db " Go!! ",0 chicago: .db "Chicago",0 colorado: .db "Colorado",0 pick: .db "Course Selection:",0 pick2: .db "enter selects",0 lap2: .db "Lap:",0 rank2: .db "Rank:",0 paus: .db "--Paused--",0 rbad: .db "Your gonna explode!!!", 0 bme: .db "Best Times Not Built YET",0 otime: .db "Your out of time, LOSER!",0 end1: .db "Nice job,",0 end2: .db "you finnished the race!",0 end3: .db "Your time:",0 end4: .db "-press enter-",0 ;shows energy spedom: .db 2,4,9 .db %11001000, %10110000 .db %10101000, %10101000 .db %11001010, %10110000 .db %10000101, %00101000 .db %00000000, %00000000 .db %01111111, %11110000 .db %10000000, %00001000 .db %10000000, %00001000 .db %01111111, %11110000 ; Maps of courses: Map1: ;Chicago .db 3,1,19 .db %11111111, %11111111, %11111111 .db %11111111, %11111111, %11111111 .db %00000000, %00000000, %00000011 .db %00011111, %11111111, %11100011 .db %00100000, %00000000, %00010011 .db %00100000, %00111100, %00010011 .db %00100000, %01000010, %00010011 .db %00100000, %01000010, %00010011 .db %11111000, %01000001, %11100011 .db %00100000, %01000000, %00000011 .db %00100000, %01000000, %00000011 .db %00100000, %00111111, %00000011 .db %00100000, %00000000, %10000011 .db %00100000, %00000000, %01000011 .db %00100000, %00000000, %00100011 .db %00010000, %00000000, %00100011 .db %00001000, %00000000, %00100011 .db %00000111, %11111111, %11000011 .db %00000000, %00000000, %00000011 Map2: ;Colorado .db 3,1,19 .db %11111111, %11111111, %11111111 .db %11111111, %11111111, %11111111 .db %00000000, %00000000, %00000011 .db %00000000, %00000000, %00000011 .db %00000111, %11111000, %00000011 .db %00001000, %00000100, %00000011 .db %00111110, %00000100, %00000011 .db %00001000, %00000100, %00000011 .db %00001000, %00000011, %10000011 .db %00000110, %00000000, %01000011 .db %00000001, %00000000, %01000011 .db %00000001, %00000000, %01000011 .db %00000010, %00000000, %00110011 .db %00011100, %00000000, %00001011 .db %00100000, %00000000, %00001011 .db %01000000, %00000011, %11110011 .db %01000000, %00000100, %00000011 .db %00111111, %11111000, %00000011 .db %00000000, %00000000, %00000011 ;######################################################## ;# Defines course and all signs, road, trees, etc. # ;# 1=sign, 2=light, 3=tree 4=checkpoint # ;######################################################## ; left of road, road, right of road, x, y course1: ; Distance: .db 0,63,0,2,10 ; 1 .db 0,63,0,2,10 ; 1 .db 4,63,0,2,10 ; 2 .db 0,63,0,2,10 ; 3 .db 0,63,0,2,11 ; 4 .db 1,63,0,2,11 ; 5 .db 0,63,3,2,11 ; 6 .db 1,63,3,2,12 ; 7 .db 0,64,0,2,12 ; 8 .db 2,65,2,2,12 ; 9 .db 2,72,0,2,13 ; 10 .db 3,78,0,2,13 ; 11 .db 0,84,1,2,13 ; 12 .db 2,96,0,2,14 ; 13 .db 0,100,3,2,14 ; 14 .db 0,106,0,2,14 ; 15 .db 2,110,3,3,15 ; 16 .db 1,105,0,3,15 ; 17 .db 0,100,0,3,15 ; 18 .db 0,90,3,4,15 ; 19 .db 2,85,0,4,15 ; 20 .db 3,80,0,4,15 ; 21 .db 3,70,2,5,15 ; 22 .db 0,67,2,5,15 ; 23 .db 0,66,0,5,15 ; 24 .db 0,65,2,6,15 ; 25 .db 3,65,0,6,15 ; 26 .db 2,64,2,6,15 ; 27 .db 0,63,1,7,15 ; 28 .db 0,63,0,7,15 ; 29 .db 1,63,0,7,15 ; 30 .db 3,63,1,8,15 ; 31 .db 0,63,2,8,15 ; 32 .db 1,63,0,8,15 ; 33 .db 0,63,0,9,15 ; 34 .db 0,63,3,9,15 ; 35 .db 2,63,0,9,15 ; 36 .db 1,63,3,10,15 ; 37 .db 0,63,0,10,15 ; 38 .db 0,63,2,10,15 ; 39 .db 3,63,0,11,15 ; 40 .db 2,63,0,11,15 ; 41 .db 1,63,2,11,15 ; 42 .db 0,63,1,12,15 ; 43 .db 0,63,2,12,15 ; 44 .db 1,63,0,12,15 ; 45 .db 0,63,2,13,15 ; 46 .db 0,63,0,13,15 ; 47 .db 3,63,0,13,15 ; 48 .db 0,63,1,14,15 ; 49 .db 2,63,0,14,15 ; 50 .db 0,63,0,14,15 ; 51 .db 1,64,3,15,15 ; 52 .db 1,64,2,15,15 ; 53 .db 0,65,0,15,15 ; 54 .db 2,66,0,16,15 ; 55 .db 1,67,2,16,15 ; 56 .db 0,68,0,16,15 ; 57 .db 2,77,3,17,15 ; 58 .db 1,82,2,17,15 ; 59 .db 3,87,0,17,15 ; 60 .db 0,96,0,18,15 ; 61 .db 0,100,0,18,15 ; 62 .db 1,105,2,18,15 ; 63 .db 2,110,3,19,14 ; 64 .db 0,105,0,19,14 ; 65 .db 1,100,0,19,14 ; 66 .db 0,90,0,19,13 ; 67 .db 0,85,3,19,13 ; 68 .db 2,80,0,19,13 ; 69 .db 0,75,0,19,12 ; 70 .db 0,80,0,19,12 ; 71 .db 2,85,2,19,12 ; 72 .db 0,96,0,19,11 ; 73 .db 2,100,0,19,11 ; 74 .db 0,105,0,19,11 ; 75 .db 2,110,2,18,10 ; 76 .db 0,105,0,18,10 ; 77 .db 2,100,0,18,10 ; 78 .db 3,90,1,17,10 ; 79 .db 1,84,0,17,10 ; 80 .db 2,80,0,17,10 ; 81 .db 0,74,0,16,10 ; 82 .db 3,80,1,16,10 ; 83 .db 1,86,0,16,10 ; 84 .db 2,95,0,15,10 ; 85 .db 0,100,0,15,10 ; 86 .db 0,105,0,15,10 ; 87 .db 3,105,3,14,11 ; 88 .db 0,95,0,14,11 ; 89 .db 0,86,0,14,11 ; 90 .db 2,62,0,14,12 ; 91 .db 3,49,2,14,12 ; 92 .db 3,30,0,14,12 ; 93 .db 0,10,0,13,13 ; 94 .db 3,12,0,13,13 ; 95 .db 3,17,1,13,13 ; 96 .db 0,27,0,12,13 ; 97 .db 0,32,0,12,13 ; 98 .db 3,37,0,12,13 ; 99 .db 0,45,3,11,13 ; 100 .db 2,40,0,11,13 ; 101 .db 0,35,0,11,13 ; 102 .db 2,25,0,10,13 ; 103 .db 0,20,2,10,13 ; 104 .db 0,15,0,10,13 ; 105 .db 2,11,2,9,12 ; 106 .db 0,16,0,9,12 ; 107 .db 0,21,2,9,12 ; 108 .db 2,30,0,9,11 ; 109 .db 0,35,2,9,11 ; 110 .db 0,40,0,9,11 ; 111 .db 1,50,1,9,10 ; 112 .db 0,55,0,9,10 ; 113 .db 0,54,2,9,10 ; 114 .db 3,48,0,9,9 ; 115 .db 0,43,1,9,9 ; 116 .db 0,38,0,9,9 ; 117 .db 1,25,2,9,8 ; 118 .db 0,20,0,9,8 ; 119 .db 0,15,0,9,8 ; 120 .db 2,10,3,10,7 ; 121 .db 0,15,3,10,7 ; 122 .db 0,20,0,10,7 ; 123 .db 3,30,0,11,7 ; 125 .db 0,35,2,11,7 ; 126 .db 0,40,0,11,7 ; 127 .db 3,50,0,12,7 ; 128 .db 0,55,0,12,7 ; 129 .db 0,60,0,12,7 ; 130 .db 3,62,2,13,7 ; 131 .db 0,63,0,13,7 ; 132 .db 0,64,0,13,7 ; 133 .db 2,66,0,14,7 ; 134 .db 0,68,1,14,7 ; 135 .db 0,71,2,14,7 ; 136 .db 1,79,1,15,7 ; 137 .db 0,82,0,15,7 ; 138 .db 0,85,0,15,7 ; 139 .db 2,90,0,16,6 ; 140 .db 0,93,0,16,6 ; 141 .db 0,96,3,16,6 ; 142 .db 0,100,2,17,5 ; 143 .db 3,97,3,17,5 ; 144 .db 0,94,0,17,5 ; 145 .db 0,86,0,18,4 ; 146 .db 0,81,1,18,4 ; 147 .db 1,77,0,18,4 ; 148 .db 0,72,0,18,3 ; 149 .db 0,79,3,18,3 ; 150 .db 3,84,0,18,3 ; 151 .db 0,96,2,18,2 ; 152 .db 0,101,3,18,2 ; 153 .db 2,106,2,18,2 ; 154 .db 1,110,0,18,1 ; 155 .db 0,105,3,18,1 ; 156 .db 0,100,0,18,1 ; 157 .db 3,90,2,17,1 ; 158 .db 2,85,0,17,1 ; 159 .db 0,80,1,17,1 ; 160 .db 0,72,0,16,1 ; 161 .db 2,69,0,16,1 ; 162 .db 0,68,0,16,1 ; 163 .db 2,67,3,15,1 ; 164 .db 0,66,0,15,1 ; 165 .db 0,66,3,15,1 ; 166 .db 1,65,3,14,1 ; 167 .db 0,65,0,14,1 ; 168 .db 2,64,0,14,1 ; 169 .db 0,64,2,13,1 ; 170 .db 3,64,0,13,1 ; 171 .db 0,63,2,13,1 ; 172 .db 0,63,0,12,1 ; 173 .db 0,63,2,12,1 ; 174 .db 1,63,0,12,1 ; 175 .db 0,63,3,11,1 ; 176 .db 3,63,0,11,1 ; 177 .db 0,63,0,11,1 ; 178 .db 2,63,0,10,1 ; 179 .db 0,63,3,10,1 ; 180 .db 0,63,3,10,1 ; 181 .db 0,63,0,9,1 ; 182 .db 2,64,1,9,1 ; 183 .db 0,64,1,9,1 ; 184 .db 1,64,0,8,1 ; 185 .db 2,64,0,8,1 ; 186 .db 0,65,0,8,1 ; 187 .db 0,65,3,7,1 ; 188 .db 1,65,0,7,1 ; 189 .db 0,66,0,7,1 ; 190 .db 0,66,2,6,1 ; 191 .db 1,67,0,6,1 ; 192 .db 0,67,2,6,1 ; 193 .db 0,74,0,5,1 ; 194 .db 0,79,0,5,1 ; 195 .db 1,84,2,5,1 ; 196 .db 3,90,0,4,2 ; 197 .db 0,94,0,4,2 ; 198 .db 0,97,1,4,2 ; 199 .db 1,100,0,3,3 ; 200 .db 1,95,0,3,3 ; 201 .db 0,90,3,3,3 ; 202 .db 1,81,0,2,4 ; 203 .db 3,76,0,2,4 ; 204 .db 1,71,2,2,4 ; 205 .db 1,67,0,2,5 ; 206 .db 0,67,0,2,5 ; 207 .db 0,66,0,2,5 ; 208 .db 0,66,2,2,6 ; 209 .db 3,65,0,2,6 ; 210 .db 0,65,0,2,6 ; 211 .db 2,65,0,2,7 ; 212 .db 0,64,0,2,7 ; 213 .db 0,64,0,2,7 ; 214 .db 2,64,3,2,8 ; 215 .db 0,64,0,2,8 ; 216 .db 1,63,0,2,8 ; 217 .db 0,63,0,2,9 ; 218 .db 0,63,0,2,9 ; 219 .db 0,63,0,2,9 ; 220 course2: ; Distance: .db 0,63,0,4,12 ; 1 .db 0,63,0,4,12 ; 1 .db 4,63,0,4,12 ; 1 .db 0,70,0,4,12 ; 2 .db 0,76,0,4,12 ; 3 .db 0,82,0,4,13 ; 4 .db 2,91,0,4,13 ; 5 .db 0,101,2,4,13 ; 6 .db 1,108,0,5,14 ; 7 .db 0,105,0,5,14 ; 8 .db 0,100,2,5,14 ; 9 .db 1,95,0,6,14 ; 10 .db 0,90,0,6,14 ; 11 .db 3,85,3,6,14 ; 12 .db 3,79,0,7,14 ; 13 .db 0,73,0,7,14 ; 14 .db 0,68,1,7,14 ; 15 .db 0,65,3,8,14 ; 16 .db 0,64,0,8,14 ; 17 .db 2,63,0,8,14 ; 18 .db 0,64,0,9,14 ; 19 .db 2,65,0,9,14 ; 20 .db 0,65,2,9,14 ; 21 .db 0,66,3,10,14 ; 22 .db 0,67,0,10,14 ; 23 .db 2,71,0,10,14 ; 24 .db 0,76,0,11,14 ; 25 .db 0,80,2,11,14 ; 26 .db 3,85,0,11,14 ; 27 .db 0,90,1,12,14 ; 28 .db 0,95,0,12,14 ; 29 .db 2,100,0,12,14 ; 30 .db 1,97,0,13,13 ; 31 .db 0,91,3,13,13 ; 32 .db 0,84,0,13,13 ; 33 .db 1,77,0,13,12 ; 34 .db 0,72,0,13,12 ; 35 .db 0,61,2,13,12 ; 36 .db 3,57,0,13,11 ; 37 .db 2,44,0,13,11 ; 38 .db 0,29,1,13,11 ; 39 .db 0,13,0,14,10 ; 40 .db 2,26,3,14,10 ; 41 .db 0,39,3,14,10 ; 42 .db 1,54,0,15,10 ; 43 .db 0,67,2,15,10 ; 44 .db 2,80,0,15,10 ; 45 .db 0,89,3,16,10 ; 46 .db 3,103,0,16,10 ; 47 .db 2,110,0,16,10 ; 48 .db 0,103,1,17,9 ; 49 .db 0,96,0,17,9 ; 50 .db 1,90,0,17,9 ; 51 .db 0,82,3,17,8 ; 52 .db 2,76,0,17,8 ; 53 .db 0,71,1,17,8 ; 54 .db 2,66,0,17,7 ; 55 .db 0,60,3,17,7 ; 56 .db 2,54,0,17,7 ; 57 .db 0,49,1,18,6 ; 58 .db 0,55,0,18,6 ; 59 .db 3,60,0,18,6 ; 60 .db 0,67,0,19,6 ; 61 .db 3,74,0,19,6 ; 62 .db 0,82,1,19,6 ; 63 .db 3,87,0,20,5 ; 64 .db 0,93,0,20,5 ; 65 .db 0,97,1,20,5 ; 66 .db 2,96,2,20,4 ; 67 .db 0,91,1,20,4 ; 68 .db 0,86,0,20,4 ; 69 .db 0,81,2,19,3 ; 70 .db 0,76,3,19,3 ; 71 .db 0,71,0,19,3 ; 72 .db 2,68,0,18,3 ; 73 .db 0,67,0,18,3 ; 74 .db 0,66,3,18,3 ; 75 .db 1,66,0,17,3 ; 76 .db 0,65,1,17,3 ; 77 .db 0,65,0,17,3 ; 78 .db 3,64,0,16,3 ; 79 .db 2,64,0,16,3 ; 80 .db 0,63,1,16,3 ; 81 .db 0,60,2,15,3 ; 82 .db 3,57,3,15,3 ; 83 .db 0,53,0,15,3 ; 84 .db 2,49,0,14,3 ; 85 .db 3,46,2,14,3 ; 86 .db 0,51,0,14,3 ; 87 .db 2,55,3,13,2 ; 88 .db 0,60,0,13,2 ; 89 .db 0,66,2,13,2 ; 90 .db 2,71,0,12,1 ; 91 .db 1,75,0,12,1 ; 92 .db 0,73,0,12,1 ; 93 .db 0,72,2,11,1 ; 94 .db 0,71,3,11,1 ; 95 .db 3,70,0,11,1 ; 96 .db 2,70,1,10,1 ; 97 .db 3,69,0,10,1 ; 98 .db 3,69,1,10,1 ; 99 .db 0,69,0,9,1 ; 100 .db 0,68,0,9,1 ; 101 .db 2,68,1,9,1 ; 102 .db 0,68,0,8,1 ; 103 .db 0,67,3,8,1 ; 104 .db 0,67,1,8,1 ; 105 .db 0,67,0,7,1 ; 106 .db 2,66,0,7,1 ; 107 .db 0,66,3,7,1 ; 108 .db 0,66,0,6,1 ; 109 .db 1,65,2,6,1 ; 110 .db 1,65,0,6,1 ; 111 .db 0,65,2,5,1 ; 112 .db 3,64,0,5,1 ; 113 .db 0,64,2,5,1 ; 114 .db 1,64,0,4,1 ; 115 .db 0,63,2,4,1 ; 116 .db 3,63,0,4,1 ; 117 .db 0,64,3,3,1 ; 118 .db 0,65,0,3,1 ; 119 .db 0,65,1,3,1 ; 120 .db 1,68,0,2,1 ; 121 .db 0,72,0,2,1 ; 122 .db 2,76,0,2,1 ; 123 .db 0,80,2,1,2 ; 124 .db 0,85,0,1,2 ; 125 .db 2,90,0,1,2 ; 126 .db 0,95,2,1,3 ; 127 .db 0,100,1,1,3 ; 128 .db 2,100,0,1,3 ; 129 .db 1,95,2,2,4 ; 130 .db 0,90,0,2,4 ; 131 .db 2,85,0,2,4 ; 132 .db 0,80,3,3,5 ; 133 .db 0,75,0,3,5 ; 134 .db 1,70,0,3,5 ; 135 .db 0,65,0,4,5 ; 136 .db 0,63,3,4,5 ; 137 .db 2,60,0,4,5 ; 138 .db 0,55,0,5,5 ; 139 .db 1,50,3,5,5 ; 140 .db 0,45,1,5,5 ; 141 .db 0,40,0,6,6 ; 142 .db 0,35,2,6,6 ; 143 .db 2,30,0,6,6 ; 144 .db 0,25,0,7,7 ; 145 .db 2,20,0,7,7 ; 146 .db 0,24,2,7,7 ; 147 .db 0,28,0,7,8 ; 148 .db 0,35,1,7,8 ; 149 .db 2,41,0,7,8 ; 150 .db 0,47,0,6,9 ; 151 .db 0,54,3,6,9 ; 152 .db 1,61,3,6,9 ; 153 .db 0,68,3,5,9 ; 154 .db 0,75,0,5,9 ; 155 .db 2,80,0,5,9 ; 156 .db 3,75,1,4,10 ; 157 .db 3,68,0,4,10 ; 158 .db 0,63,0,4,10 ; 159 .db 0,63,0,4,11 ; 160 .db 0,63,0,4,11 ; 161 .db 0,63,0,4,11 ; 162 ;################################################## ;# c1-c4 refer to the posisions of the car # ;# # ;#c1= \ c2= ^ c3= / c4= \/ (looking back at you # ;################################################## c1: .db 2,1,10 .db %00101110, %10000000 .db %00000111, %00000000 .db %00000111, %10000000 .db %00011111, %11111110 .db %00100000, %00000100 .db %00011111, %11111000 .db %00110111, %11101100 .db %01111011, %11011110 .db %01111000, %00011110 .db %00110000, %00001100 c2: .db 2,1,10 .db %00000101, %10100000 .db %00000011, %11000000 .db %00000011, %11000000 .db %00111111, %11111100 .db %00100000, %00000100 .db %00011111, %11111000 .db %00110111, %11101100 .db %01111011, %11011110 .db %01111000, %00011110 .db %00110000, %00001100 c3: .db 2,1,10 .db %00000001, %01110100 .db %00000000, %11100000 .db %00000001, %11100000 .db %01111111, %11111000 .db %00100000, %00000100 .db %00011111, %11111000 .db %00110111, %11101100 .db %01111011, %11011110 .db %01111000, %00011110 .db %00110000, %00001100 ;##################################################### ;# # ;# burning sprites, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2 # ;# # ;##################################################### exp1: .db 2,1,6 .db %00000000, %00000000 .db %00010010, %00000000 .db %00101101, %01110000 .db %00010000, %10001000 .db %00100011, %00010000 .db %00011010, %10100000 exp2: .db 2,1,6 .db %00000001, %00000000 .db %00111010, %10100000 .db %00100110, %01011100 .db %01010010, %01001000 .db %00100000, %00010000 .db %00011010, %01111000 exp3: .db 2,1,7 .db %00110000, %10000000 .db %01001001, %01000000 .db %01000110, %01011100 .db %01110001, %10100010 .db %10010001, %00000100 .db %11000001, %00101000 .db %01001010, %01101000 ;######################################################## ;# # ;# NEW EXPLODING SPRITES!!!!!!!!!!!!!!!!!!!!! # ;# # ;######################################################## blp1: .db 4,4,17 .db %10000001, %00000000, %00010000, %00000000 .db %00000000, %00000000, %00000000, %00001000 .db %00100000, %00001000, %00000001, %00000000 .db %00000000, %00000000, %10000000, %00000000 .db %10000010, %00000000, %00000100, %00000000 .db %00000000, %10010000, %00100000, %01000000 .db %00100100, %00010000, %10000010, %01000000 .db %00000001, %01000010, %00010001, %00000000 .db %00000110, %01000100, %10100110, %00000000 .db %00000000, %10010010, %10101000, %00000000 .db %00000000, %10110110, %01010000, %00000000 .db %00000000, %00011010, %10100000, %00000000 .db %00000000, %00100100, %10100000, %00000000 .db %00000000, %00001011, %01100000, %00000000 .db %00000000, %00001110, %10000000, %00000000 .db %00000000, %00000111, %10000000, %00000000 .db %00000000, %00000011, %00000000, %00000000 blp2: .db 4,5,21 .db %00100000, %00000000, %10000000, %00000000 .db %00000000, %10000000, %00000010, %00000000 .db %00000000, %00000100, %00000000, %00010000 .db %10000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00010001, %00000001, %00000010, %00000000 .db %00000000, %00000000, %00010000, %00000000 .db %00000000, %00010000, %00000000, %01000000 .db %00000010, %00000000, %01000000, %00000000 .db %00010000, %01000100, %00001000, %00000000 .db %00000100, %00000000, %00000000, %00000000 .db %00000000, %10010000, %00001000, %00000000 .db %00000000, %00100100, %10000000, %10000000 .db %00000000, %10000000, %00000100, %00000000 .db %00000000, %00001001, %00100000, %00000000 .db %00000000, %00000000, %00000010, %00000000 .db %00000000, %00001000, %10100000, %00000000 .db %00000000, %00000001, %00001000, %00000000 .db %00000000, %00000010, %10000000, %00000000 .db %00000000, %00000001, %00000000, %00000000 .db %00000000, %00000000, %10000000, %00000000 blp3: .db 4,1,23 .db %00000100, %00001000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %01000000 .db %00000000, %00000000, %00000000, %00000000 .db %10000000, %00000000, %00100000, %00000001 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %01000000, %00000000, %00000000 .db %00000000, %00000000, %00000001, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00001000, %00000001, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000001, %00000000, %00000000, %00100000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00001000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000001, %00000010, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000100, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000 blp4: .db 5,2,20 .db %10000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000100, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000010 .db %00000000, %10000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000001, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000100, %00000000, %00010000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %10000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 .db %00000000, %00000000, %00000000, %00000000, %00000000 ;############################################################ ;# cp1x-3x refer to the partial sprites for the checkpoints # ;############################################################ cp11: .db 4,1,9 .db %01111111, %11111111, %11111111, %11111111 .db %10000000, %00000000, %00000000, %00000000 .db %10000001, %10100100, %11001101, %01011000 .db %10000010, %00100101, %00010001, %10010101 .db %10000010, %00111101, %11010001, %10011001 .db %10000010, %00100101, %00010001, %01010001 .db %10000001, %10100100, %11001101, %01010000 .db %10000000, %00000000, %00000000, %00000000 .db %10000111, %11111111, %11111111, %11111111 cp12: .db 3,3,9 .db %11111111, %11111111, %11111000 .db %00000000, %00000000, %00000100 .db %10011101, %00101110, %00000100 .db %01001001, %10100100, %00000100 .db %01001001, %10100100, %00000100 .db %01001001, %01100100, %00000100 .db %10011101, %00100100, %00000100 .db %00000000, %00000000, %00000100 .db %11111111, %11111111, %10000100 cp2: .db 5,2,7 .db %01111111, %11111111, %11111111, %11111111, %11111100 .db %10000000, %00000000, %00000000, %00000000, %00000010 .db %10000110, %10101101, %10101011, %01011001, %11000010 .db %10000100, %11101101, %00110011, %01010100, %10000010 .db %10000010, %10101100, %10101010, %01010100, %10000010 .db %10000000, %00000000, %00000000, %00000000, %00000010 .db %10001111, %11111111, %11111111, %11111111, %11100010 cp3: .db 4,7,3 .db %01111111, %11111111, %11111111, %10000000 .db %10000101, %01001101, %01010000, %01000000 .db %10011111, %11111111, %11111110, %01000000 ;##################################################### ;#l1-l4 refer to the lights on the side of the road # ;##################################################### l1: .db 1,1,25 .db %00000000 .db %00111100 .db %01000010 .db %01000010 .db %01000010 .db %00111100 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00011000 .db %00111100 .db %00000000 l2: .db 1,2,16 .db %00000000 .db %00111000 .db %01000100 .db %01000100 .db %00111000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00010000 .db %00111000 .db %00000000 l3: .db 1,4,8 .db %00000000 .db %00100000 .db %01010000 .db %00100000 .db %00100000 .db %00100000 .db %00100000 .db %00000000 l4: .db 1,6,5 .db %00000000 .db %01000000 .db %01000000 .db %01000000 .db %00000000 ;########################################################## ;# s1-s3 refer to the three signs on the side of the road # ;########################################################## s1: .db 2,1,12 .db %00000000, %00000000 .db %01111111, %11111110 .db %01000000, %00000010 .db %01010001, %00111010 .db %01010001, %01000010 .db %01010101, %00110010 .db %01010101, %00001010 .db %01001010, %01110010 .db %01000000, %00000010 .db %01111111, %11111110 .db %00010000, %00001000 .db %00000000, %00000000 s2: .db 2,8,7 .db %00000000, %00000000 .db %01111111, %00000000 .db %01010001, %00000000 .db %01000101, %00000000 .db %01111111, %00000000 .db %00100010, %00000000 .db %00000000, %00000000 s3: .db 1,2,6 .db %00000000 .db %01111100 .db %01000100 .db %01111100 .db %00101000 .db %00000000 ;################################################## ;# t1-t4 refer to the four trees along the road # ;################################################## t1: .db 2,1,15 .db %00000000, %00000000 .db %00000001, %00000000 .db %00000011, %10000000 .db %00000111, %01000000 .db %00000111, %11100000 .db %00001111, %11100000 .db %00000101, %11110000 .db %00001111, %11110000 .db %00011111, %11111000 .db %00111111, %01111100 .db %00010111, %11111000 .db %00111111, %11011100 .db %01111111, %11111110 .db %00000001, %10000000 .db %00000000, %00000000 t2: .db 2,6,11 .db %00000000, %00000000 .db %00000100, %00000000 .db %00001110, %00000000 .db %00011110, %00000000 .db %00010111, %00000000 .db %00011111, %00000000 .db %00111101, %10000000 .db %01110111, %11000000 .db %00111111, %00000000 .db %00001000, %00000000 .db %00000000, %00000000 t3: .db 1,2,7 .db %00000000 .db %00010000 .db %00110000 .db %00111000 .db %01111100 .db %00010000 .db %00000000 t4: .db 1,6,4 .db %00000000 .db %01000000 .db %01000000 .db %00000000 Back2: ;GCP by Andreas Ess, ZCP(by SJ) compressed picture, size = 436 bytes .db $00,$81,$F8,$0E,$4C,$08,$E0,$48,$83,$49,$08,$F8,$14,$F8,$0B,$4A .db $81,$E0,$9F,$F8,$87,$C0,$FE,$D1,$49,$81,$FF,$0A,$C0,$8F,$F8,$80 .db $49,$80,$FF,$0A,$F1,$48,$B0,$F2,$C2,$FE,$83,$FF,$09,$F8,$87,$FE .db $09,$F6,$09,$FE,$10,$4B,$09,$D0,$87,$08,$FF,$0A,$FC,$83,$DC,$98 .db $14,$F0,$0E,$4B,$09,$D0,$10,$F0,$08,$48,$0F,$FE,$0F,$C8,$80,$C0 .db $83,$DE,$0A,$D0,$1F,$49,$0E,$48,$0E,$C8,$80,$C0,$81,$8C,$09,$FC .db $80,$49,$08,$F0,$83,$E0,$0C,$FF,$0D,$C8,$81,$E0,$17,$CC,$80,$D5 .db $A0,$8E,$14,$FC,$9B,$C0,$08,$F8,$81,$E0,$0D,$FC,$8E,$C0,$8F,$FC .db $81,$A0,$0F,$FF,$16,$E6,$8F,$FF,$0D,$FF,$85,$E0,$85,$AA,$80,$D0 .db $10,$FF,$83,$4A,$83,$A8,$AA,$D4,$0B,$D5,$86,$E0,$87,$FE,$80,$F0 .db $10,$D5,$84,$C9,$90,$B3,$87,$48,$8F,$E1,$FE,$8A,$F8,$8A,$D4,$81 .db $A7,$E3,$F0,$BF,$C3,$4B,$83,$D8,$AA,$D4,$A1,$85,$A8,$B6,$A0,$AA .db $D0,$87,$95,$8A,$C1,$AA,$89,$92,$A0,$D6,$8F,$FF,$8F,$E1,$FE,$8A .db $D8,$8F,$FC,$87,$A7,$E3,$F0,$BF,$C3,$4B,$87,$AC,$AA,$D4,$A1,$85 .db $A8,$AD,$E0,$AA,$D0,$9B,$95,$8A,$C1,$AA,$89,$92,$A1,$B5,$8F,$FF .db $8F,$E1,$FE,$8C,$F8,$8A,$D4,$85,$A7,$E3,$F0,$BF,$C3,$4B,$86,$CC .db $AA,$D4,$A1,$85,$A8,$AF,$A0,$BF,$F0,$97,$95,$8A,$C1,$AA,$89,$92 .db $A1,$BB,$8A,$D5,$8F,$E1,$FE,$8A,$A8,$8A,$D4,$86,$E7,$E3,$F0,$BF .db $C3,$4B,$86,$D4,$BF,$FC,$A1,$85,$A8,$BF,$A0,$AA,$D0,$99,$95,$8A .db $C1,$AA,$89,$92,$A1,$E7,$8A,$D5,$8F,$E1,$FE,$8E,$D8,$8F,$FC,$87 .db $A7,$E3,$F0,$BF,$C2,$A4,$C8,$B5,$A2,$D5,$A2,$88,$AA,$C2,$DA,$82 .db $D5,$81,$A9,$A8,$D4,$8A,$D0,$7F,$7F,$F0,$00 Back1: ;GCP by Andreas Ess, ZCP(by SJ) compressed picture, size = 196 bytes .db $00,$3F,$3F,$17,$D0,$15,$C0,$3F,$1E,$F9,$10,$C7,$3F,$22,$FE,$E2 .db $80,$DD,$F8,$30,$E0,$23,$DF,$EE,$F0,$9F,$48,$31,$F8,$23,$53,$AF .db $4C,$A0,$21,$C4,$FE,$23,$6A,$24,$F7,$48,$20,$DF,$67,$A0,$1B,$51 .db $82,$17,$72,$1E,$53,$8E,$15,$73,$12,$D0,$83,$52,$BE,$82,$0A,$DF .db $70,$A0,$09,$FC,$93,$5A,$87,$82,$9F,$76,$0C,$FF,$9D,$5C,$9F,$8E .db $7D,$0A,$73,$BF,$7D,$A2,$BF,$7F,$76,$BF,$7F,$7F,$7F,$7F,$7F,$7F .db $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$E0,$3F,$3F,$3F,$3F,$3F,$3F .db $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F .db $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F .db $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F,$00 PictureData: ;GCP by Andreas Ess, ZCP(by SJ) compressed picture, size = 762 bytes .db $00,$87,$48,$2E,$4A,$3C,$4D,$2C,$F9,$FE,$12,$E0,$09,$E0,$86,$08 .db $F9,$E7,$C0,$16,$E0,$80,$F8,$8F,$C1,$C0,$8F,$EF,$FB,$FC,$9F,$C0 .db $F8,$A1,$E0,$86,$80,$E0,$FE,$09,$F0,$83,$E7,$F0,$BF,$5F,$87,$0B .db $F3,$48,$9F,$F3,$FE,$80,$F0,$80,$F7,$FC,$FE,$BF,$48,$9F,$F9,$F9 .db $E0,$80,$5E,$9E,$81,$E1,$C0,$FE,$BF,$F0,$B0,$86,$83,$E0,$BD,$E1 .db $84,$4B,$9F,$F3,$F8,$B8,$87,$87,$C3,$F0,$FE,$19,$E0,$8E,$F0,$E2 .db $BE,$08,$F0,$8F,$81,$E0,$B8,$B3,$9E,$83,$E0,$21,$FE,$8C,$E3,$C0 .db $82,$08,$E0,$9C,$87,$86,$91,$C0,$B8,$8C,$0D,$E0,$84,$9F,$C3,$DC .db $E0,$11,$E1,$9C,$87,$86,$99,$82,$B0,$9C,$9F,$E1,$F0,$BE,$BE,$87 .db $F9,$08,$F0,$9E,$A0,$C7,$83,$C3,$84,$83,$08,$E0,$98,$81,$B0,$B0 .db $BE,$8D,$E9,$87,$F8,$90,$80,$F3,$C1,$E1,$C6,$81,$E0,$B0,$8F,$F8 .db $A6,$98,$8F,$C3,$92,$A1,$C0,$84,$09,$D1,$E1,$E1,$C4,$87,$A0,$B0 .db $8F,$F8,$A6,$8C,$8F,$C3,$92,$81,$C0,$8F,$E0,$E6,$B8,$B8,$B3,$81 .db $CC,$98,$81,$C0,$89,$C0,$C1,$F0,$E0,$E0,$B3,$C2,$98,$9F,$CE,$8E .db $8F,$09,$FC,$9C,$81,$C0,$8B,$08,$E3,$E1,$C1,$C1,$FF,$8C,$B0,$93 .db $8E,$9C,$98,$80,$E3,$86,$80,$E0,$86,$0A,$E7,$C3,$83,$83,$C0,$98 .db $E0,$E3,$9C,$B8,$A8,$81,$86,$8E,$80,$E0,$8E,$09,$E7,$C2,$81,$81 .db $C0,$98,$E0,$C3,$8E,$B8,$A6,$83,$83,$87,$E0,$FE,$8F,$C3,$F1,$E0 .db $C8,$B0,$B0,$83,$98,$90,$B3,$CE,$89,$F0,$C0,$E0,$98,$87,$C2,$B0 .db $98,$F8,$B2,$8C,$8C,$80,$F6,$88,$8C,$F3,$C0,$3A,$F8,$B2,$8C,$86 .db $08,$FC,$90,$81,$E3,$C0,$0B,$C0,$A0,$8C,$10,$C0,$FA,$8C,$C3,$81 .db $E0,$81,$C0,$A0,$9C,$BF,$7E,$A1,$88,$B0,$9F,$C0,$0B,$4A,$83,$7F .db $C8,$A6,$86,$0C,$E0,$8F,$4B,$81,$63,$BF,$53,$82,$89,$E1,$C0,$80 .db $58,$3F,$0B,$C2,$B8,$B3,$59,$3F,$13,$C2,$B8,$83,$54,$3F,$0C,$F8 .db $82,$99,$F0,$8F,$48,$3F,$16,$C4,$82,$91,$4C,$3F,$20,$C8,$82,$93 .db $4C,$14,$C1,$A8,$C0,$EF,$CE,$A5,$F3,$1A,$FC,$82,$93,$DF,$F8,$12 .db $C1,$A8,$C1,$92,$91,$A9,$84,$C0,$13,$C6,$82,$83,$C0,$1A,$D4,$D1 .db $81,$84,$A2,$E3,$C4,$19,$FC,$82,$83,$C0,$1A,$D4,$D1,$80,$C4,$A2 .db $E2,$82,$1D,$C0,$BF,$F0,$1E,$D1,$A2,$84,$C8,$C5,$A4,$92,$1C,$C0 .db $BF,$F0,$82,$10,$C0,$D1,$BB,$C3,$88,$B9,$97,$CC,$1C,$F8,$BF,$E0 .db $87,$0F,$D0,$3F,$28,$C8,$0A,$C8,$3F,$28,$DA,$0A,$EA,$3F,$29,$D9 .db $09,$F7,$3F,$29,$F3,$A0,$95,$C8,$08,$C8,$F1,$92,$81,$C0,$A0,$9C .db $9C,$22,$EC,$E4,$8B,$B9,$C0,$89,$88,$92,$A0,$94,$8C,$84,$82,$24 .db $D9,$CF,$8A,$B3,$90,$86,$C7,$8A,$D0,$8A,$85,$84,$81,$C0,$1C,$E6 .db $B3,$D4,$CC,$E7,$81,$D1,$82,$D8,$83,$81,$E1,$08,$C0,$1B,$E6,$B2 .db $A2,$8C,$E6,$B0,$AC,$A0,$B6,$80,$D0,$A8,$90,$88,$1C,$FD,$CC,$F1 .db $A1,$99,$E8,$89,$8E,$88,$C0,$94,$91,$83,$C3,$C0,$18,$EC,$E6,$A4 .db $A3,$CE,$A0,$3F,$19,$DB,$9A,$A0,$CE,$B6,$3F,$1F,$C9,$C9,$80,$C7 .db $90,$81,$C1,$E0,$F0,$FC,$80,$F8,$BC,$91,$87,$83,$C0,$0A,$F3,$E4 .db $80,$C6,$C0,$82,$C2,$82,$08,$C0,$80,$C0,$A0,$EC,$90,$90,$11,$D8 .db $A0,$81,$84,$0A,$F0,$F0,$A0,$88,$0A,$C0,$A0,$D4,$9C,$88,$12,$C1 .db $0D,$C0,$0A,$D0,$C0,$90,$88,$0A,$C0,$A0,$D4,$90,$84,$17,$C0,$09 .db $C0,$09,$C8,$C0,$88,$88,$0A,$C0,$A0,$C4,$90,$82,$16,$C0,$0B,$C0 .db $08,$F0,$F0,$F0,$88,$0A,$C0,$F0,$C4,$9C,$9C,$15,$C0,$0D,$C0,$3F .db $25,$C0,$0F,$C0,$3F,$23,$C0,$11,$C0,$81,$E0,$C8,$B8,$BE,$3D,$C0 .db $13,$C0,$84,$A1,$90,$A0,$90,$3B,$C0,$15,$C0,$88,$C2,$A0,$C0,$A0 .db $3F,$21,$C4,$92,$84,$82,$3F,$26,$F0,$B8,$9C,$84,$3F,$28,$C0,$00 ED1: .db "The Best Racers:",0 .db "Colorado:",0 .db "Chicago:",0 .db "-press enter-",0 ED2: .db "Great Job!",0 .db "You've got",0 .db "a new BEST time!!!",0 .db "Enter your name....",0 HiScrName1: .db "Will ",0 HiScrName2: .db "Richa",0 HiScore1: .db 2,4,1,3 HiScore2: .db 2,1,0,2 .end