; _____________________________________________________________________ ;| ________ | ;| ** ** *** | | | ;| 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 Racer (c.) | ;| RR RR AAAAAA C EEE RRRR SS Will Stokes | ;| RR RR A A C E R R S Version U1.3 | ;| RR RR A A CCCC EE R R SSS June, 1997 | ;| | ;|_____________________________________________________________________| ;| | ;| 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" .org 0 .db "Mega Racers V U1.3", 0 ;<-----Name that appears on shell menu ; ___________________________________________________ ; / \ ;| 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_MEM2+50 ; which course, 1, 2, etc. cont = TEXT_MEM+52 Rank = TEXT_MEM2+17 Lap = TEXT_MEM2+18 power = TEXT_MEM+54 set_crash = TEXT_MEM2+20 ; these two are used to set_crash2 = TEXT_MEM2+21 ; show crashes and time, respectively. set_crash3 = TEXT_MEM2+22 ; also used to time and show crash set_crash4 = TEXT_MEM2+23 ; also used to time and show crash expr = TEXT_MEM2+24 ;have you exploded? (died) tim1 = TEXT_MEM2+25 ;\ tim2 = TEXT_MEM2+26 ; \ tim3 = TEXT_MEM2+27 ; \ tim4 = TEXT_MEM2+28 ; \___All used for timers, see below.... tim5 = TEXT_MEM2+29 ; / tim6 = TEXT_MEM2+30 ; / tim7 = TEXT_MEM2+31 ; / tim8 = TEXT_MEM2+32 ;/ stime = TEXT_MEM2+34 semi_time = TEXT_MEM+60 ;####################################################################### ;# # ;# 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 | ; \__________________________________________/ ld a, 2 ld (Car2), a ld a, 64 ld (Car1), a ld a, 27 ld (I), a ld a, 1 ld (dist), a 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) 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 c, 63 ld hl, &PictureData ld de,VIDEO_MEM DispPic_Loop2: ld b, 16 DispPic_Loop1: ld a, (hl) ld (de), a inc hl inc de djnz DispPic_Loop1 dec c jr nz, DispPic_Loop2 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, 18 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, 22 ld (temp3), a ret dn2: ld a, 14 ld (temp3), a ret dn3: ld a, 6 ld (temp3), a ret block: ld a, (temp1) ld b, a ld a, (temp2) ld c, a call &ChangePixel ld a, (temp1) ld b, a inc b ld a, b ld (temp1), a cp 60 jr nz, block ld a, 18 ld (temp1), a ld a, (temp2) ld c, a inc c ld a, c 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 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 hl, $1D15 ld de, bme call &text2 call &Dimu call OTH_PAUSE ld a, 1 ld (temp5), a ld (endgame2), a call &q2 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 txtr1: ld hl, $1133 ld de, chicago call &text2 ret txtr2: ld hl, $112F ld de, colorado call &text2 ret game: call &reseters call &Dimd call &drawback2 call &update3 call &Dimu jr gskp game987: ld a, (CONTRAST) ld (cont), a ld a, 0 ld (CONTRAST), a call &drawback2 call &update3 ld a, (cont) ld (CONTRAST), a gskp: call &txtr ld hl, $1908 ld de, pick call &text2 ld hl, $1945 ld de, pick2 call &text2 g2345: call GET_KEY ;<----Get last keystroke. cp K_ENTER JUMP_Z(game236) cp K_NOKEY jr z, g2345 ld b, 64 game456: ;-- So, now to the options screen; scroll title up first: ; code taken, then modified from Andres Ess, thanx again. push bc ld hl, VIDEO_MEM+16 ld de, VIDEO_MEM ld bc, 1008 ldir call &semip2 ld hl, VIDEO_MEM+1008 xor a ld b, 16 ClearLineL: ld (hl), a inc hl djnz ClearLineL pop bc djnz game456 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 semip5: call &semip3 call &semip3 call &semip3 call &semip3 ret semip3: ld bc, 8000 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, 5 ld (tim7), a ld a, 6 ld (tim8), a ret cr2: ld a, 3 ld (tim7), a ld a, 6 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 ROM_CALL(M_CHARPUT) ld a, $25 ld ($8334), a ld a, $0F ld ($8333), a ld a, (Lap) add a, $30 ROM_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 ROM_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 ROM_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 ROM_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 ROM_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 ROM_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 ROM_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 ROM_CALL(M_CHARPUT) ret reset: ld a, $37 ld (endgame2), a ret getter: ; Routine used to get and comprehend last ld e, 6 ld a, 0 ld (endgame2), a call OTH_ARROW 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 z ld e, 7 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: 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 ;/ 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 update3: 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 ;/ 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_(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: ld de,VIDEO_MEM DispPic_Loop4: ld b, 16 DispPic_Loop3: ld a, (hl) ld (de), a inc hl inc de djnz DispPic_Loop3 dec c jr nz, DispPic_Loop4 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 ROM_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 ROM_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: ROM_CALL(FIND_PIXEL) ld de,GRAPH_MEM add hl,de or (hl) ld (hl),a ret Poff: ROM_CALL(FIND_PIXEL) ld de,GRAPH_MEM add hl,de xor 255 and (hl) ld (hl),a ret ChangePixel: ROM_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 ROM_CALL(D_ZM_STR) ret ;############################################### ;#b1-b3 are the best times from best to worst # ;############################################### b1: .dw 997 b2: .dw 998 b3: .dw 999 ;################################################################### ;# Couple of strings used in the game for startup and other stuff. # ;################################################################### ln1: .db "Mega Racers Version U1.3",0 ln2: .db "Copyright June, 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 "Pick your course,",0 pick2: .db " enter to select.",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 ;============================================ Map3: ;Amsterdam ; .db 3,1,19 ; .db %11111111, %11111111, %11111111 ; .db %11111111, %11111111, %11111111 ; .db %00000000, %00000000, %00000011 ; .db %00000000, %00000000, %00000011 ; .db %00001100, %00001111, %11100011 ; .db %00010010, %00010000, %00010011 ; .db %00100001, %01111100, %00010011 ; .db %00100001, %00010000, %00010011 ; .db %00100001, %00010001, %11100011 ; .db %00100001, %00010010, %00000011 ; .db %00100001, %00010010, %00000011 ; .db %00100001, %00010010, %00000011 ; .db %00100001, %00010010, %00000011 ; .db %00100001, %00010010, %00000011 ; .db %00100001, %00010010, %00000011 ; .db %00100000, %11100001, %11100011 ; .db %00100000, %00000000, %00010011 ; .db %00011111, %11111111, %11100011 ; .db %00000000, %00000000, %00000011 Map4: ;Country Course ; .db 3,1,19 ; .db %11111111, %11111111, %11111111 ; .db %11111111, %11111111, %11111111 ; .db %00000000, %00000000, %00000011 ; .db %00000011, %11111111, %00000011 ; .db %00000100, %00000000, %10000011 ; .db %00001000, %00000011, %11100011 ; .db %00010000, %01111000, %10000011 ; .db %00100000, %10000100, %10000011 ; .db %00100001, %00000100, %10000011 ; .db %00100010, %00000100, %10000011 ; .db %00100100, %00000100, %10000011 ; .db %00100011, %11100011, %00000011 ; .db %00100000, %00010000, %00000011 ; .db %00100000, %00010000, %01100011 ; .db %00011110, %00010000, %10010011 ; .db %00000001, %00001111, %00010011 ; .db %00000001, %00000000, %00010011 ; .db %00000000, %11111111, %11100011 ; .db %00000000, %00000000, %00000011 Map5: ;Gary ; .db 3,1,19 ; .db %11111111, %11111111, %11111111 ; .db %11111111, %11111111, %11111111 ; .db %00000000, %00000000, %00000011 ; .db %00001111, %11100011, %11000011 ; .db %00010000, %00010100, %00100011 ; .db %00010000, %00010100, %00100011 ; .db %00001111, %10010100, %11111011 ; .db %00000000, %01010100, %00100011 ; .db %00000000, %01010100, %00100011 ; .db %00000000, %10010100, %00010011 ; .db %00001111, %00010100, %00001011 ; .db %00010000, %00001000, %00001011 ; .db %00100000, %00000000, %00001011 ; .db %00100001, %11111111, %11110011 ; .db %00100010, %00000000, %00000011 ; .db %00100001, %11111111, %11000011 ; .db %00010000, %00000000, %00100011 ; .db %00001111, %11111111, %11000011 ; .db %00000000, %00000000, %00000011 Map6: ;Yellowstone ; .db 3,1,19 ; .db %11111111, %11111111, %11111111 ; .db %11111111, %11111111, %11111111 ; .db %00000000, %00000000, %00000011 ; .db %00000111, %11100000, %00000011 ; .db %00001000, %00010001, %11000011 ; .db %00010000, %00010010, %00100011 ; .db %00100001, %11100010, %00100011 ; .db %00100010, %00000010, %00100011 ; .db %00100010, %00000010, %00100011 ; .db %00100010, %00001111, %10100011 ; .db %00100010, %00000010, %00100011 ; .db %00100001, %00000010, %00100011 ; .db %00100000, %10000010, %00100011 ; .db %00010000, %01000010, %00100011 ; .db %00001000, %00111100, %00100011 ; .db %00000100, %00000000, %00100011 ; .db %00000010, %00000000, %00100011 ; .db %00000001, %11111111, %11000011 ; .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: .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$14,$00,$00,$01,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$40,$00,$23,$80,$00,$00 .db $00,$00,$00,$06,$00,$00,$00,$00,$00,$3F,$62,$01,$77,$C0,$00,$00 .db $00,$00,$00,$0F,$00,$00,$00,$00,$01,$7F,$77,$03,$FF,$E0,$00,$00 .db $00,$00,$08,$1F,$80,$00,$00,$00,$03,$FF,$FF,$AF,$FF,$F4,$00,$00 .db $00,$00,$1C,$3F,$C0,$00,$00,$00,$07,$FF,$FF,$FF,$FF,$FE,$00,$00 .db $00,$00,$3F,$FF,$E0,$80,$00,$00,$2F,$FF,$FF,$FF,$FF,$FF,$40,$00 .db $00,$00,$7F,$FF,$F1,$C0,$00,$00,$7F,$FF,$FF,$FF,$FF,$FF,$E0,$00 .db $05,$00,$7F,$FF,$FB,$E0,$40,$00,$FF,$FF,$FF,$FF,$FF,$FF,$E0,$00 .db $0F,$84,$FF,$FF,$FF,$F0,$E0,$05,$FF,$FF,$FF,$FF,$FF,$FF,$F4,$00 .db $1F,$CE,$FF,$FF,$FF,$F9,$F0,$8F,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $3F,$FF,$FF,$FF,$FF,$FF,$F9,$DF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$A2 .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F7 .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Back1: .db $0F,$80,$00,$3C,$00,$03,$E0,$00,$0F,$FF,$00,$C1,$FE,$0F,$FE,$00 .db $1F,$E1,$00,$7F,$80,$0F,$FC,$0E,$03,$FE,$03,$C0,$FD,$47,$FE,$05 .db $1F,$E3,$C0,$7F,$C0,$1F,$F0,$1F,$C0,$0E,$3F,$EC,$39,$42,$FC,$0D .db $03,$83,$E0,$3B,$80,$0E,$C0,$0F,$C0,$00,$1F,$FC,$01,$40,$38,$05 .db $00,$07,$F8,$00,$0F,$00,$00,$03,$80,$00,$1F,$FC,$01,$40,$00,$00 .db $00,$07,$FC,$00,$0F,$C0,$00,$24,$00,$80,$0E,$F0,$01,$40,$00,$00 .db $07,$00,$78,$00,$03,$F0,$00,$24,$00,$80,$04,$60,$03,$E0,$0F,$F8 .db $07,$00,$00,$07,$C3,$F8,$00,$24,$01,$C0,$00,$00,$02,$60,$0A,$A8 .db $05,$00,$00,$0F,$E0,$70,$00,$3C,$01,$C0,$00,$0F,$83,$A0,$0F,$F8 .db $05,$00,$00,$0F,$E0,$00,$00,$66,$1F,$FC,$00,$1F,$C2,$E0,$0A,$A8 .db $07,$00,$00,$0A,$A1,$FF,$F0,$6A,$15,$54,$00,$15,$43,$60,$0F,$F8 .db $05,$3E,$3E,$0F,$E1,$24,$90,$66,$1F,$FC,$7E,$1F,$C2,$BC,$0A,$A8 .db $07,$2A,$2A,$0A,$A1,$FF,$F0,$76,$15,$54,$42,$15,$43,$64,$0A,$A8 .db $1D,$3E,$3E,$0F,$E1,$24,$90,$56,$1F,$FC,$7E,$1F,$C2,$AC,$0F,$F8 .db $1B,$2A,$2A,$0A,$A1,$FF,$F0,$EB,$15,$54,$42,$15,$42,$DC,$0A,$A8 .db $15,$3E,$3E,$0F,$E1,$24,$90,$B5,$1F,$FC,$7E,$1F,$C3,$3C,$0A,$A8 .db $17,$2A,$2A,$0A,$A1,$FF,$F0,$D3,$15,$54,$42,$15,$42,$F4,$0F,$F8 .db $1B,$3E,$3E,$0F,$E1,$24,$90,$BB,$15,$54,$7E,$1F,$C2,$94,$0A,$A8 .db $19,$2A,$2A,$0A,$A1,$FF,$F0,$D5,$1F,$FC,$42,$15,$43,$F4,$0A,$A8 .db $1D,$3E,$3E,$0F,$E1,$24,$90,$E7,$15,$54,$7E,$1F,$C3,$AC,$0F,$F8 .db $15,$2A,$2A,$0A,$A1,$24,$90,$D5,$15,$54,$42,$15,$42,$B4,$0A,$A8 .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF country_dbs: ; .db $00,$00,$00,$00,$00,$00,$24,$00,$00,$00,$00,$01,$4D,$40,$00,$02 ; .db $89,$00,$00,$00,$00,$00,$99,$00,$00,$00,$00,$04,$99,$50,$00,$00 ; .db $75,$07,$00,$00,$10,$04,$AC,$A8,$00,$00,$20,$05,$2E,$80,$00,$02 ; .db $4A,$4F,$80,$01,$C0,$01,$4B,$80,$00,$02,$E0,$01,$72,$00,$06,$84 ;; .db $A8,$0F,$80,$2C,$68,$00,$30,$00,$00,$0A,$AC,$00,$80,$00,$1B,$22 ; .db $0D,$87,$00,$53,$52,$00,$00,$00,$00,$A5,$A9,$00,$00,$00,$54,$C0 ; .db $00,$00,$00,$14,$54,$00,$00,$00,$00,$3B,$74,$00,$00,$00,$15,$40 ; .db $00,$00,$00,$01,$88,$00,$20,$00,$00,$55,$50,$00,$00,$00,$00,$00 ; .db $00,$00,$00,$00,$20,$00,$08,$00,$00,$0A,$80,$00,$00,$00,$00,$00 ; .db $80,$00,$00,$00,$00,$01,$D6,$03,$00,$00,$40,$00,$00,$FF,$E0,$00 ; .db $80,$00,$00,$00,$00,$04,$51,$02,$00,$00,$00,$00,$01,$FF,$F8,$02 ; .db $C0,$2A,$80,$00,$00,$06,$C6,$01,$80,$00,$00,$00,$03,$FF,$F0,$04 ; .db $80,$D5,$80,$00,$00,$01,$51,$07,$00,$00,$00,$05,$7D,$00,$34,$96 ; .db $E0,$3A,$0D,$40,$00,$0A,$55,$86,$80,$A0,$00,$15,$FF,$4D,$34,$96 ; .db $C0,$6B,$15,$03,$FF,$82,$AE,$03,$C0,$D8,$01,$70,$85,$0C,$30,$0E ; .db $E0,$BC,$2E,$C7,$FF,$C4,$91,$0E,$C1,$68,$05,$80,$FD,$FF,$E0,$0A ; .db $60,$2D,$92,$8D,$FF,$E2,$A4,$0B,$03,$B4,$17,$00,$48,$00,$00,$1E ; .db $B0,$55,$2B,$44,$80,$40,$BA,$0B,$42,$D8,$18,$00,$48,$00,$00,$1A ; .db $C0,$2E,$0A,$84,$AD,$40,$70,$1B,$81,$50,$21,$11,$44,$88,$88,$86 ; .db $80,$08,$03,$04,$8C,$40,$70,$05,$A0,$60,$3F,$FF,$82,$FF,$FF,$FA ; .db $80,$08,$03,$04,$8C,$41,$78,$03,$00,$60,$21,$11,$81,$88,$88,$8A ; .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE gary_dbs: ; .db $A2,$40,$99,$40,$F0,$00,$00,$00,$70,$05,$73,$0F,$9C,$D8,$07,$80 ; .db $2A,$42,$D1,$93,$FC,$00,$00,$01,$FF,$05,$55,$3F,$D4,$24,$8F,$E2 ; .db $A4,$40,$52,$A0,$F0,$00,$F8,$00,$3E,$01,$24,$DC,$94,$3B,$03,$C0 ; .db $51,$0F,$A9,$00,$00,$07,$FE,$00,$00,$00,$89,$01,$28,$46,$00,$00 ; .db $35,$BF,$65,$00,$00,$01,$F8,$00,$00,$07,$A0,$C0,$40,$54,$00,$00 ; .db $54,$8F,$94,$00,$7F,$00,$00,$00,$00,$1F,$D4,$21,$A9,$0F,$80,$02 ; .db $BB,$83,$A8,$01,$FF,$C0,$00,$01,$F0,$07,$EA,$A2,$10,$DF,$E0,$1E ; .db $EB,$02,$C0,$E0,$7E,$00,$00,$0F,$FF,$81,$F4,$41,$43,$5F,$00,$3E ; .db $AC,$0F,$23,$F8,$00,$07,$E0,$1F,$FF,$00,$02,$A3,$89,$40,$00,$1E ; .db $34,$2A,$87,$F0,$00,$3F,$F8,$03,$F0,$00,$01,$D3,$07,$00,$3E,$00 ; .db $18,$50,$03,$80,$00,$1F,$E0,$00,$00,$00,$38,$73,$1C,$01,$FF,$80 ; .db $1D,$C1,$E0,$00,$00,$03,$80,$00,$00,$01,$FE,$3B,$B8,$00,$7F,$00 ; .db $15,$47,$F8,$01,$FF,$F8,$00,$00,$00,$00,$FC,$2A,$A8,$0C,$00,$00 ; .db $15,$41,$E0,$07,$AA,$AC,$00,$00,$00,$00,$00,$2A,$A8,$3F,$80,$00 ; .db $7F,$F0,$00,$1F,$FF,$FE,$00,$0F,$80,$7C,$00,$2A,$A8,$1F,$00,$00 ; .db $40,$10,$00,$78,$AA,$AE,$78,$10,$40,$82,$00,$FF,$FE,$00,$00,$00 ; .db $40,$18,$1F,$E0,$FF,$FE,$FE,$1F,$C0,$FE,$03,$80,$02,$00,$00,$00 ; .db $40,$1E,$11,$80,$AA,$AE,$78,$10,$C0,$86,$03,$80,$03,$06,$0E,$1C ; .db $C0,$13,$D1,$00,$FF,$FE,$00,$10,$C0,$86,$03,$80,$02,$FD,$F5,$EA ; .db $40,$10,$F1,$00,$AA,$AE,$00,$20,$61,$03,$03,$80,$02,$04,$04,$08 ; .db $40,$10,$3F,$00,$AA,$AE,$00,$20,$61,$03,$03,$80,$02,$04,$04,$08 ; .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE amsterdam_dbs: ; .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; .db $00,$00,$00,$00,$00,$01,$20,$00,$00,$00,$00,$06,$28,$00,$00,$00 ; .db $00,$00,$00,$00,$00,$14,$55,$00,$00,$00,$00,$09,$62,$00,$00,$20 ; .db $00,$00,$00,$00,$00,$05,$4D,$40,$00,$00,$00,$15,$0C,$00,$00,$8A ; .db $80,$00,$00,$00,$7C,$16,$22,$00,$00,$00,$00,$42,$10,$80,$02,$20 ; .db $20,$00,$18,$00,$FE,$12,$AD,$40,$00,$00,$00,$12,$46,$00,$00,$48 ; .db $80,$28,$68,$00,$FE,$01,$85,$00,$04,$58,$00,$45,$1C,$00,$04,$92 ; .db $20,$1B,$28,$00,$FE,$00,$00,$00,$13,$62,$00,$01,$C0,$00,$02,$20 ; .db $A0,$05,$4A,$80,$FE,$00,$00,$00,$16,$C8,$00,$00,$00,$00,$00,$C4 ; .db $00,$2A,$92,$00,$7C,$00,$00,$00,$41,$12,$00,$00,$00,$00,$00,$0A ; .db $80,$09,$04,$00,$00,$00,$00,$00,$16,$48,$1F,$C0,$00,$92,$80,$00 ; .db $00,$00,$80,$00,$00,$00,$00,$00,$29,$68,$FF,$F8,$02,$54,$70,$00 ; .db $00,$00,$00,$00,$00,$00,$00,$00,$0D,$00,$FD,$F8,$00,$89,$10,$00 ; .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7D,$F0,$02,$52,$40,$00 ; .db $00,$00,$00,$00,$00,$00,$00,$0C,$00,$00,$3F,$E0,$02,$9D,$60,$00 ; .db $00,$40,$00,$00,$00,$00,$00,$3C,$00,$00,$10,$40,$00,$03,$00,$00 ; .db $00,$60,$78,$00,$00,$03,$F0,$7C,$00,$00,$10,$40,$FF,$FF,$FE,$00 ; .db $00,$7F,$87,$80,$00,$7C,$0F,$FC,$00,$00,$10,$41,$FF,$FF,$FF,$00 ; .db $00,$7F,$FF,$E0,$01,$FF,$FF,$FC,$00,$00,$10,$41,$11,$11,$11,$00 ; .db $00,$09,$96,$00,$00,$0D,$06,$40,$00,$00,$10,$41,$11,$11,$11,$00 ; .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE yellowstone_dbs: ; .db $00,$00,$00,$00,$06,$D0,$00,$05,$80,$01,$02,$00,$80,$20,$01,$BE ; .db $80,$14,$00,$00,$24,$95,$00,$13,$68,$00,$08,$00,$40,$08,$0B,$FA ; .db $00,$EA,$90,$00,$1B,$BE,$00,$0E,$A0,$04,$00,$10,$00,$00,$04,$BE ; .db $01,$6D,$58,$00,$0C,$F0,$00,$03,$84,$00,$01,$09,$00,$80,$43,$68 ; .db $00,$F5,$70,$00,$00,$00,$00,$00,$0E,$00,$20,$10,$C8,$00,$00,$70 ; .db $00,$2B,$B8,$00,$00,$00,$00,$00,$18,$00,$00,$27,$60,$88,$00,$00 ; .db $00,$1C,$E0,$00,$20,$00,$20,$00,$06,$00,$04,$93,$A2,$00,$00,$00 ; .db $00,$00,$00,$00,$E0,$02,$84,$00,$7C,$00,$00,$6D,$54,$00,$00,$00 ; .db $00,$00,$00,$01,$E0,$28,$A9,$00,$5A,$80,$09,$C9,$91,$50,$00,$00 ; .db $1F,$FF,$FE,$04,$20,$0E,$3E,$40,$6B,$00,$08,$2B,$B4,$80,$00,$00 ; .db $3F,$FF,$FF,$03,$E1,$B2,$C5,$00,$0C,$C0,$00,$93,$88,$80,$00,$00 ; .db $67,$FF,$FF,$89,$20,$5D,$EE,$60,$5D,$40,$02,$17,$A2,$01,$04,$00 ; .db $C3,$FF,$FF,$C6,$21,$A6,$39,$00,$C3,$A0,$40,$69,$69,$03,$04,$10 ; .db $41,$FF,$FF,$E0,$20,$3A,$E6,$41,$D6,$40,$C0,$13,$B0,$02,$86,$10 ; .db $41,$00,$00,$40,$20,$A9,$5A,$C1,$55,$D0,$C0,$07,$8E,$03,$8E,$30 ; .db $41,$00,$00,$40,$20,$AE,$AA,$E0,$1A,$68,$A0,$20,$E0,$06,$8B,$28 ; .db $41,$7C,$07,$40,$20,$16,$E8,$E3,$DB,$D1,$E0,$03,$94,$06,$C4,$78 ; .db $41,$45,$F5,$52,$28,$83,$C1,$A0,$9B,$71,$E0,$08,$D0,$0B,$C0,$38 ; .db $41,$7D,$57,$40,$A0,$13,$C9,$F2,$BE,$D0,$44,$13,$60,$4F,$44,$10 ; .db $41,$01,$50,$52,$22,$41,$C4,$82,$1C,$10,$92,$07,$D0,$27,$A2,$82 ; .db $31,$01,$50,$48,$A4,$09,$E0,$10,$9C,$44,$00,$02,$E0,$43,$08,$10 ; .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE PictureData: .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$03,$FF,$FF,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$07,$FF,$FF,$F8,$00,$00,$00,$07,$F8,$00,$00,$00,$00 .db $00,$00,$00,$0F,$FF,$FF,$F8,$00,$00,$00,$1F,$FE,$00,$00,$00,$00 .db $00,$00,$00,$10,$00,$00,$38,$00,$00,$00,$20,$1E,$00,$00,$00,$00 .db $00,$00,$00,$10,$00,$00,$38,$00,$00,$00,$20,$0F,$00,$00,$00,$00 .db $00,$00,$00,$10,$F8,$7C,$38,$00,$00,$00,$27,$87,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$00,$00,$26,$47,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$00,$00,$26,$47,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$00,$00,$27,$8E,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$00,$00,$20,$1C,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$00,$00,$20,$30,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$00,$20,$00,$20,$38,$00,$00,$00,$00 .db $00,$00,$00,$10,$E8,$74,$38,$F1,$E3,$80,$20,$0E,$0E,$18,$DC,$60 .db $00,$00,$00,$10,$E8,$74,$39,$02,$24,$40,$20,$07,$11,$25,$12,$90 .db $00,$00,$00,$10,$E8,$74,$39,$02,$24,$40,$23,$C3,$91,$21,$12,$80 .db $00,$00,$00,$10,$E8,$74,$39,$02,$24,$40,$23,$A1,$91,$21,$12,$80 .db $00,$00,$00,$10,$E8,$74,$39,$E2,$27,$C0,$23,$91,$9F,$21,$DC,$60 .db $00,$00,$00,$10,$E8,$74,$39,$02,$24,$40,$23,$11,$91,$21,$12,$10 .db $00,$00,$00,$10,$C8,$64,$31,$02,$24,$40,$23,$11,$11,$25,$12,$90 .db $00,$00,$00,$10,$C8,$64,$31,$01,$E4,$40,$22,$11,$11,$18,$D2,$60 .db $00,$00,$00,$0F,$07,$83,$C0,$F0,$20,$00,$1C,$0E,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$02,$20,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$01,$C0,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$80,$00,$00,$00,$00,$03,$00 .db $00,$00,$0C,$68,$87,$31,$46,$00,$01,$88,$38,$06,$00,$80,$03,$00 .db $00,$00,$0A,$8A,$88,$4A,$A8,$00,$01,$9C,$7C,$DF,$31,$C0,$03,$00 .db $00,$00,$0A,$CA,$8B,$7A,$AC,$00,$01,$BE,$FF,$FF,$FF,$E6,$77,$00 .db $00,$00,$0A,$8A,$89,$4A,$A8,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$0A,$67,$07,$4A,$A6,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$0C,$66,$E3,$B9,$46,$60,$01,$80,$00,$00,$00,$01,$C3,$00 .db $00,$00,$0A,$88,$41,$12,$A8,$80,$01,$80,$00,$00,$00,$0E,$83,$00 .db $00,$00,$0C,$C4,$41,$12,$AC,$40,$01,$80,$00,$00,$00,$31,$03,$00 .db $00,$00,$0A,$82,$41,$12,$A8,$20,$01,$80,$00,$00,$01,$C2,$03,$00 .db $00,$00,$0C,$6C,$41,$3A,$A6,$C0,$01,$80,$00,$00,$0E,$04,$03,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$80,$C0,$00,$30,$19,$FB,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$80,$C0,$00,$C0,$21,$0B,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$81,$E0,$03,$00,$41,$FB,$00 .db $00,$00,$06,$8B,$B8,$00,$00,$00,$01,$83,$60,$1C,$00,$81,$0B,$00 .db $00,$00,$08,$51,$10,$00,$00,$00,$01,$83,$E0,$60,$E0,$80,$03,$00 .db $00,$00,$0E,$21,$10,$00,$00,$00,$01,$83,$70,$8F,$F9,$00,$03,$00 .db $00,$00,$08,$51,$10,$00,$00,$00,$01,$85,$D1,$08,$09,$00,$03,$00 .db $00,$00,$06,$8B,$90,$00,$00,$00,$01,$87,$FA,$0F,$F9,$00,$03,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$80,$C4,$06,$31,$00,$03,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .end