CHDIR ".\programs\samples\thebob\chopper" ' °° ' ' °° °°° ' ' °°°°°° °°° °°° ' ' °°°°°°° °°° °°° ' ' °°° °° °°° °° °° °°° ' ' °°° °° °° °° °° °°°° °°°° °°° °° °° °° ' ' °°°° °° °°° °°°°°° °°°° °°°° °°°° °°°°°°° °° ' ' °°°° °° °°°° °°° °°°°°°°°° °°°°°° °° °° °°°°°° °° ' ' ²²² ²²²²²²² ²² ²² ²²²²²²²²²²²²²² ²²²²² ²²²² ²² ' ' ²² ²²² ²²² ²²² ²²² ²² ²² ²²² ²² ²²²²²²²² ²²²²²² ²² ' ' ²² ²²² ²²² ²² ²²² ²² ²²² ²² ²²² ²² ²²² ²² ²²²² ²²² ' ' ²²²²²² ²² ²² ²²²²² ²²²²² ²²²²² ²²²²²² ²² ²²²² ' ' ²² ²²²² ²²²² ²² ' ' ²² ²² ' ' ²²² ²²² ' ' ²² ²² ' ' ' ' CHOPPER.BAS - Copyright (C) 2005 by Bob Seguin (Freeware) ' ' ' '***************************************************************************' DEFINT A-Z DECLARE FUNCTION InitMOUSE () DECLARE FUNCTION Seeker (x, y, Mode) DECLARE SUB MouseSTATUS (LB, RB, MouseX, MouseY) DECLARE SUB ShowMOUSE () DECLARE SUB HideMOUSE () DECLARE SUB LocateMOUSE (x, y) DECLARE SUB FieldMOUSE (x1, y1, x2, y2) DECLARE SUB PauseMOUSE (LB, RB, MouseX, MouseY) DECLARE SUB ClearMOUSE () DECLARE SUB MouseDRIVER (LB, RB, MX, MY) DECLARE SUB PrintSTRING (x, y, Prnt$) DECLARE SUB SetPALETTE () DECLARE SUB FourBIT (x1, y1, x2, y2, FileNAME$) DECLARE SUB LoadIMAGE (x, y, FileNAME$) DECLARE SUB LoadFILE (FileNAME$) DECLARE SUB LoadBSI (x, y, FileNAME$) DECLARE SUB ClearBOX () DECLARE SUB Interval (Length!) DECLARE SUB ChopperIDE () DECLARE SUB Tire (x, y, Outer, Inner) DECLARE SUB Tread (x, y, Radius, StartDEG, StopDEG, Colr) DECLARE SUB ProjectMENU () DECLARE SUB HelpMENU () DECLARE SUB HiLIGHT () DECLARE SUB DeLIGHT () DECLARE SUB MenuBAR (InOUT) DECLARE SUB LoadPHASE () DECLARE SUB Assembly1 () DECLARE SUB Assembly2 () DECLARE SUB Assembly3 () DECLARE SUB HandleBARS (InOUT) DECLARE SUB PaintSHOP (Mode) '---------------------------------------------------------------------------- '$DYNAMIC DIM SHARED Box(26000) DIM SHARED MenuBOX(500) DIM SHARED MenuBOX2(500) DIM SHARED MenuBOX3(4000) DIM SHARED CustomCOLORS(9, 20) DIM SHARED FChar(1 TO 124) DIM SHARED MouseDATA$ DIM SHARED LB, RB, MouseX, MouseY DIM SHARED Menu, TopMENU, Phase, Item, BarBOX, PaintITEM DIM SHARED BikeCOLOR, FlameSTYLE, MenuITEM CONST Degree! = 3.14159 / 180 'Create and load MouseDATA$ for CALL ABSOLUTE routines DATA 55,89,E5,8B,5E,0C,8B,07,50,8B,5E,0A,8B,07,50,8B,5E,08,8B DATA 0F,8B,5E,06,8B,17,5B,58,1E,07,CD,33,53,8B,5E,0C,89,07,58 DATA 8B,5E,0A,89,07,8B,5E,08,89,0F,8B,5E,06,89,17,5D,CA,08,00 MouseDATA$ = SPACE$(57) FOR i = 1 TO 57 READ h$ Hexxer$ = CHR$(VAL("&H" + h$)) MID$(MouseDATA$, i, 1) = Hexxer$ NEXT i Moused = InitMOUSE IF NOT Moused THEN PRINT "Sorry, cat must have got the mouse." SLEEP 2 SYSTEM END IF DEF SEG = VARSEG(CustomCOLORS(0, 0)) BLOAD "chcolors.bsv", VARPTR(CustomCOLORS(0, 0)) DEF SEG SCREEN 12 BikeCOLOR = 3 FlameSTYLE = 1 SetPALETTE ChopperIDE LocateMOUSE 319, 120 ShowMOUSE DO MouseSTATUS LB, RB, MouseX, MouseY SELECT CASE MenuITEM CASE 1: ProjectMENU CASE 2: HelpMENU END SELECT SELECT CASE MouseY CASE 32 TO 46: MenuBAR 1 CASE 294 TO 479 SELECT CASE Phase CASE IS < 8: Assembly1 CASE 8 TO 20: Assembly2 CASE 21: HandleBARS 1 CASE 22 TO 24: Assembly3 CASE 25: PaintSHOP 1 END SELECT CASE ELSE IF TopMENU THEN MenuBAR 0 IF Item THEN DeLIGHT IF BarBOX THEN HandleBARS 0 IF PaintITEM THEN PaintSHOP 0 END SELECT IF Splash = 0 AND MouseY < 60 THEN LINE (146, 154)-(493, 356), 0, BF LINE (146, 288)-(493, 293), 1, BF LINE (146, 288)-(493, 288), 2, BF LINE (146, 293)-(493, 293), 5, BF LINE (146, 252)-(493, 280), 2, BF SetPALETTE Splash = 1 END IF ClearMOUSE LoadPHASE LOOP END '************************** PALETTE DATA ******************************** PaletteDATA: DATA 4, 2, 12, 6, 4, 14, 12, 12, 20 DATA 31, 31, 38, 46, 46, 50, 0, 0, 0 CustomCOLORS: DATA 6,7,8,10,12,13,14 FlameCOLOR: DATA 63, 63, 63, 63, 32, 12, 63, 52, 0 SilverCOLOR: DATA 63, 63, 63, 38, 38, 35, 53, 53, 48 GoldCOLOR: DATA 63, 63, 42, 63, 42, 21, 63, 52, 32 WhiteCOLOR: DATA 63, 63, 63, 48, 48, 53, 53, 53, 58 REM $STATIC SUB Assembly1 SHARED ItemX, ItemY, Choice, Frame, Extension, FrameCOLOR SHARED ForkX, ForkY, WheelFX, WheelFY, WheelRX, WheelRY, BarX, BarY SHARED OuterRADIUS, InnerRADIUS, FrontINDEX, RearINDEX, FrameX, FrameY SELECT CASE Phase CASE 1 SELECT CASE MouseX CASE 116 TO 310 IF Item <> 1 THEN DeLIGHT ItemX = 156: ItemY = 452 HiLIGHT Item = 1 END IF CASE 330 TO 523 IF Item <> 2 THEN DeLIGHT ItemX = 390: ItemY = 452 HiLIGHT Item = 2 END IF CASE ELSE DeLIGHT END SELECT CASE 2 SELECT CASE MouseX CASE 20 TO 234 IF Item <> 3 THEN DeLIGHT ItemX = 90: ItemY = 430 HiLIGHT Item = 3 END IF CASE 255 TO 384 IF Item <> 4 THEN DeLIGHT ItemX = 271: ItemY = 430 HiLIGHT Item = 4 END IF CASE 405 TO 560 IF Item <> 5 THEN DeLIGHT ItemX = 431: ItemY = 430 HiLIGHT Item = 5 END IF CASE ELSE DeLIGHT END SELECT CASE 3 SELECT CASE MouseX CASE 110 TO 240 IF Item <> 6 THEN DeLIGHT ItemX = 112: ItemY = 440 HiLIGHT Item = 6 END IF CASE 260 TO 390 IF Item <> 7 THEN DeLIGHT ItemX = 270: ItemY = 440 HiLIGHT Item = 7 END IF CASE 410 TO 540 IF Item <> 8 THEN DeLIGHT ItemX = 420: ItemY = 440 HiLIGHT Item = 8 END IF END SELECT CASE 4 IF Extension = 1 OR Extension = 2 THEN SELECT CASE MouseX CASE 40 TO 150 IF Item <> 9 THEN DeLIGHT ItemX = 40: ItemY = 445 HiLIGHT Item = 9 END IF CASE 170 TO 280 IF Item <> 10 THEN DeLIGHT ItemX = 180: ItemY = 445 HiLIGHT Item = 10 END IF CASE 340 TO 450 IF Item <> 11 THEN DeLIGHT ItemX = 330: ItemY = 445 HiLIGHT Item = 11 END IF CASE 470 TO 600 IF Item <> 12 THEN DeLIGHT ItemX = 470: ItemY = 445 HiLIGHT Item = 12 END IF CASE ELSE DeLIGHT END SELECT ELSE SELECT CASE MouseX CASE 20 TO 138 IF Item <> 13 THEN DeLIGHT ItemX = 12: ItemY = 445 HiLIGHT Item = 13 END IF CASE 139 TO 232 IF Item <> 14 THEN DeLIGHT ItemX = 140: ItemY = 445 HiLIGHT Item = 14 END IF CASE 264 TO 386 IF Item <> 15 THEN DeLIGHT ItemX = 250: ItemY = 445 HiLIGHT Item = 15 END IF CASE 387 TO 490 IF Item <> 16 THEN DeLIGHT ItemX = 372: ItemY = 445 HiLIGHT Item = 16 END IF CASE 491 TO 600 IF Item <> 17 THEN DeLIGHT ItemX = 490: ItemY = 445 HiLIGHT Item = 17 END IF CASE ELSE DeLIGHT END SELECT END IF CASE 5 SELECT CASE MouseX CASE 80 TO 198 IF Item <> 18 THEN DeLIGHT ItemX = 70: ItemY = 440 HiLIGHT Item = 18 END IF CASE 199 TO 318 IF Item <> 19 THEN DeLIGHT ItemX = 190: ItemY = 440 HiLIGHT Item = 19 END IF CASE 319 TO 438 IF Item <> 20 THEN DeLIGHT ItemX = 320: ItemY = 440 HiLIGHT Item = 20 END IF CASE 439 TO 560 IF Item <> 21 THEN DeLIGHT ItemX = 440: ItemY = 440 HiLIGHT Item = 21 END IF CASE ELSE DeLIGHT END SELECT CASE 6 SELECT CASE MouseX CASE 80 TO 198 IF Item <> 22 THEN DeLIGHT ItemX = 70: ItemY = 440 HiLIGHT Item = 22 END IF CASE 199 TO 318 IF Item <> 23 THEN DeLIGHT ItemX = 190: ItemY = 440 HiLIGHT Item = 23 END IF CASE 319 TO 438 IF Item <> 24 THEN DeLIGHT ItemX = 320: ItemY = 440 HiLIGHT Item = 24 END IF CASE 439 TO 560 IF Item <> 25 THEN DeLIGHT ItemX = 440: ItemY = 440 HiLIGHT Item = 25 END IF CASE ELSE DeLIGHT END SELECT CASE 7 SELECT CASE MouseX CASE 70 TO 169 IF Item <> 26 THEN DeLIGHT ItemX = 50: ItemY = 442 HiLIGHT Item = 26 END IF CASE 170 TO 269 IF Item <> 27 THEN DeLIGHT ItemX = 150: ItemY = 442 HiLIGHT Item = 27 END IF CASE 270 TO 369 IF Item <> 28 THEN DeLIGHT ItemX = 250: ItemY = 442 HiLIGHT Item = 28 END IF CASE 370 TO 469 IF Item <> 29 THEN DeLIGHT ItemX = 350: ItemY = 442 HiLIGHT Item = 29 END IF CASE 470 TO 569 IF Item <> 30 THEN DeLIGHT ItemX = 450: ItemY = 442 HiLIGHT Item = 30 END IF CASE ELSE DeLIGHT END SELECT END SELECT IF LB = -1 AND Item <> 0 THEN SELECT CASE Item CASE 1, 2 Frame = Item DeLIGHT Phase = 2 CASE 3, 4, 5 FrameCOLOR = Item - 2 DeLIGHT Phase = 3 CASE 6, 7, 8 Extension = Item - 5 DeLIGHT GOSUB SetFRAME DeLIGHT CASE 9 TO 17 GOSUB SetFORK CASE 18 TO 21 GOSUB SetTIREF Phase = 6 CASE 22 TO 25 GOSUB SetTIRER Phase = 7 CASE 26 TO 30 GOSUB SetWHEELS Phase = 8 END SELECT END IF EXIT SUB '************************* SUBROUTINE SECTION BEGINS ************************ SetFRAME: HideMOUSE SELECT CASE Frame CASE 1 SELECT CASE Extension CASE 1 IF FrameCOLOR = 1 THEN LoadIMAGE 255, 130, "CHFrmRP": LoadFILE "CHNkRP" IF FrameCOLOR = 2 THEN LoadIMAGE 255, 130, "CHFrmRB": LoadFILE "CHNkRB" IF FrameCOLOR = 3 THEN LoadIMAGE 255, 130, "CHFrmRC": LoadFILE "CHNkRC" FrameX = 245: FrameY = 115 PUT (247, 125), Box(), AND PUT (247, 125), Box(150) CIRCLE (270, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR40 D R40 D L40" PSET (316, 258), 5: DRAW "R120 F L121" PSET (316, 266), 5: DRAW "R126 F L127" LINE (310, 258)-(318, 262), 5, BF LINE (311, 263)-(319, 267), 5, BF LINE (380, 258)-(388, 262), 5, BF LINE (382, 263)-(390, 267), 5, BF CASE 2 IF FrameCOLOR = 1 THEN LoadIMAGE 261, 130, "CHFrmRP": LoadFILE "CHNkXP" IF FrameCOLOR = 2 THEN LoadIMAGE 261, 130, "CHFrmRB": LoadFILE "CHNkXB" IF FrameCOLOR = 3 THEN LoadIMAGE 261, 130, "CHFrmRC": LoadFILE "CHNkXC" FrameX = 251: FrameY = 115 PUT (252, 124), Box(), AND PUT (252, 124), Box(150) CIRCLE (270, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR47 D R47 D L47" PSET (324, 258), 5: DRAW "R120 F L121" PSET (324, 266), 5: DRAW "R126 F L127" LINE (316, 258)-(324, 262), 5, BF LINE (318, 263)-(326, 267), 5, BF LINE (386, 258)-(394, 262), 5, BF LINE (389, 263)-(396, 267), 5, BF CASE 3 IF FrameCOLOR = 1 THEN LoadIMAGE 275, 130, "CHFrmRP": LoadFILE "CHNkXXP" IF FrameCOLOR = 2 THEN LoadIMAGE 275, 130, "CHFrmRB": LoadFILE "CHNkXXB" IF FrameCOLOR = 3 THEN LoadIMAGE 275, 130, "CHFrmRC": LoadFILE "CHNkXXC" FrameX = 265: FrameY = 115 PUT (267, 125), Box(), AND PUT (267, 125), Box(150) CIRCLE (270, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR65 D R65 D L65" PSET (339, 258), 5: DRAW "R120 F L121" PSET (339, 266), 5: DRAW "R126 F L127" LINE (331, 258)-(339, 262), 5, BF LINE (333, 263)-(341, 267), 5, BF LINE (401, 258)-(409, 262), 5, BF LINE (404, 263)-(411, 267), 5, BF END SELECT CASE 2 SELECT CASE Extension CASE 1 IF FrameCOLOR = 1 THEN LoadIMAGE 250, 126, "CHFrmXP": LoadFILE "CHNkRP" IF FrameCOLOR = 2 THEN LoadIMAGE 250, 126, "CHFrmXB": LoadFILE "CHNkRB" IF FrameCOLOR = 3 THEN LoadIMAGE 250, 126, "CHFrmXC": LoadFILE "CHNkRC" FrameX = 250: FrameY = 126: DropSHADOW = 0 PUT (245, 124), Box(), AND PUT (245, 124), Box(150) CIRCLE (270, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR50 D R50 D L50" PSET (324, 258), 5: DRAW "R130 F L131" PSET (324, 266), 5: DRAW "R136 F L137" LINE (316, 258)-(324, 262), 5, BF LINE (317, 263)-(325, 267), 5, BF LINE (360, 258)-(396, 262), 5, BF LINE (362, 263)-(398, 267), 5, BF CASE 2 IF FrameCOLOR = 1 THEN LoadIMAGE 256, 126, "CHFrmXP": LoadFILE "CHNkXP" IF FrameCOLOR = 2 THEN LoadIMAGE 256, 126, "CHFrmXB": LoadFILE "CHNkXB" IF FrameCOLOR = 3 THEN LoadIMAGE 256, 126, "CHFrmXC": LoadFILE "CHNkXC" FrameX = 256: FrameY = 126: DropSHADOW = 0 PUT (251, 124), Box(), AND PUT (251, 124), Box(150) CIRCLE (276, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR50 D R50 D L50" PSET (328, 258), 5: DRAW "R130 F L131" PSET (328, 266), 5: DRAW "R136 F L137" LINE (324, 258)-(332, 262), 5, BF LINE (325, 263)-(333, 267), 5, BF LINE (368, 258)-(404, 262), 5, BF LINE (370, 263)-(406, 267), 5, BF CASE 3 IF FrameCOLOR = 1 THEN LoadIMAGE 270, 126, "CHFrmXP": LoadFILE "CHNkXXP" IF FrameCOLOR = 2 THEN LoadIMAGE 270, 126, "CHFrmXB": LoadFILE "CHNkXXB" IF FrameCOLOR = 3 THEN LoadIMAGE 270, 126, "CHFrmXC": LoadFILE "CHNkXXC" FrameX = 270: FrameY = 126: DropSHADOW = 0 PUT (265, 126), Box(), AND PUT (265, 126), Box(150) CIRCLE (278, 262), 6, 5, , , .3 PAINT STEP(0, 0), 5 DRAW "U nR58 D R58 D L58" PSET (338, 258), 5: DRAW "R130 F L131" PSET (338, 266), 5: DRAW "R138 F L139" LINE (333, 258)-(341, 262), 5, BF LINE (335, 263)-(343, 267), 5, BF LINE (380, 258)-(416, 262), 5, BF LINE (383, 263)-(419, 267), 5, BF END SELECT END SELECT ShowMOUSE Phase = 4 RETURN SetFORK: IF Frame = 1 THEN SELECT CASE Extension CASE 1 SELECT CASE Item CASE 9: LoadFILE "CHSprRP.BSI": ForkX = 194: ForkY = 108 CASE 10: LoadFILE "CHSprRC.BSI": ForkX = 194: ForkY = 108 CASE 11: LoadFILE "CHFrkGRP.BSI": ForkX = 203: ForkY = 114 CASE 12: LoadFILE "CHFrkGRC.BSI": ForkX = 203: ForkY = 114 END SELECT CASE 2 SELECT CASE Item CASE 9: LoadFILE "CHSprXP.BSI": ForkX = 184: ForkY = 108 CASE 10: LoadFILE "CHSprXC.BSI": ForkX = 184: ForkY = 108 CASE 11: LoadFILE "CHFrkGXP.BSI": ForkX = 193: ForkY = 113 CASE 12: LoadFILE "CHFrkGXC.BSI": ForkX = 193: ForkY = 113 END SELECT CASE 3 SELECT CASE Item CASE 13: LoadFILE "CHSprXXP.BSI": ForkX = 176: ForkY = 113 CASE 14: LoadFILE "CHSprXXC.BSI": ForkX = 176: ForkY = 113 CASE 15: LoadFILE "CHFrkXXP.BSI": ForkX = 183: ForkY = 116 CASE 16: LoadFILE "CHFrkXXM.BSI": ForkX = 183: ForkY = 116 CASE 17: LoadFILE "CHFrkXXC.BSI": ForkX = 183: ForkY = 116 END SELECT END SELECT ELSE SELECT CASE Extension CASE 1 SELECT CASE Item CASE 9: LoadFILE "CHSprRP.BSI": ForkX = 192: ForkY = 108 CASE 10: LoadFILE "CHSprRC.BSI": ForkX = 192: ForkY = 108 CASE 11: LoadFILE "CHFrkGRP.BSI": ForkX = 203: ForkY = 114 CASE 12: LoadFILE "CHFrkGRC.BSI": ForkX = 203: ForkY = 114 END SELECT CASE 2 SELECT CASE Item CASE 9: LoadFILE "CHSprXP.BSI": ForkX = 182: ForkY = 108 CASE 10: LoadFILE "CHSprXC.BSI": ForkX = 182: ForkY = 108 CASE 11: LoadFILE "CHFrkGXP.BSI": ForkX = 190: ForkY = 113 CASE 12: LoadFILE "CHFrkGXC.BSI": ForkX = 190: ForkY = 113 END SELECT CASE 3 SELECT CASE Item CASE 13: LoadFILE "CHSprXXP.BSI": ForkX = 175: ForkY = 113 CASE 14: LoadFILE "CHSprXXC.BSI": ForkX = 175: ForkY = 113 CASE 15: LoadFILE "CHFrkXXP.BSI": ForkX = 181: ForkY = 116 CASE 16: LoadFILE "CHFrkXXM.BSI": ForkX = 181: ForkY = 116 CASE 17: LoadFILE "CHFrkXXC.BSI": ForkX = 181: ForkY = 116 END SELECT END SELECT END IF HideMOUSE PUT (ForkX + Box(0), ForkY + Box(1)), Box(3), AND PUT (ForkX, ForkY), Box(Box(2)) PSET (ForkX + 12, 258), 5 SELECT CASE Extension CASE 1 DRAW "R78 d9 L84 E R82 u7 L76 R64" LINE STEP(-10, 0)-STEP(24, 7), 5, BF CASE 2 DRAW "R88 d9 L94 E R92 u7 L86 R74" LINE STEP(-10, 0)-STEP(24, 7), 5, BF CASE 3 DRAW "R98 d9 L104 E R102 u7 L96 R84" LINE STEP(-10, 0)-STEP(24, 7), 5, BF END SELECT DeLIGHT ShowMOUSE Phase = 5 FOR x = 254 TO 300 FOR y = 110 TO 130 IF POINT(x, y) = 11 THEN BarX = x: BarY = y RETURN END IF NEXT y NEXT x RETURN SetTIREF: HideMOUSE SELECT CASE ForkX CASE 176: WheelFX = 179: WheelFY = 217 CASE 183: WheelFX = 188: WheelFY = 217 CASE 184: WheelFX = 188: WheelFY = 217 CASE 175: WheelFX = 178: WheelFY = 217 ' CASE 181: WheelFX = 186: WheelFY = 217 ' CASE 182: WheelFX = 186: WheelFY = 217 ' CASE 193: WheelFX = 199: WheelFY = 217 CASE 194: WheelFX = 197: WheelFY = 217 CASE 190: WheelFX = 196: WheelFY = 217 ' CASE 192: WheelFX = 195: WheelFY = 217 ' CASE 203: WheelFX = 208: WheelFY = 217 CASE 203: WheelFX = 208: WheelFY = 217 ' END SELECT SELECT CASE Item CASE 18: InnerRADIUS = 38: FrontINDEX = 0 CASE 19: InnerRADIUS = 35: FrontINDEX = 1800 CASE 20: InnerRADIUS = 33: FrontINDEX = 3600 CASE 21: InnerRADIUS = 30: FrontINDEX = 5400 END SELECT Tire WheelFX - 100, WheelFY - 100, 48, InnerRADIUS ShowMOUSE DeLIGHT RETURN SetTIRER: HideMOUSE IF Frame = 1 THEN SELECT CASE Extension CASE 1: WheelRX = 435: WheelRY = 217 CASE 2: WheelRX = 441: WheelRY = 217 CASE 3: WheelRX = 455: WheelRY = 217 END SELECT OuterRADIUS = 48 SELECT CASE Item CASE 22: InnerRADIUS = 33: RearINDEX = 3600 CASE 23: InnerRADIUS = 30: RearINDEX = 5400 CASE 24: InnerRADIUS = 27: RearINDEX = 7200 CASE 25: InnerRADIUS = 24: RearINDEX = 9000 END SELECT ELSE SELECT CASE Extension CASE 1: WheelRX = 440: WheelRY = 223 CASE 2: WheelRX = 446: WheelRY = 223 CASE 3: WheelRX = 460: WheelRY = 223 END SELECT OuterRADIUS = 42 SELECT CASE Item CASE 22: InnerRADIUS = 27: RearINDEX = 10800 CASE 23: InnerRADIUS = 25: RearINDEX = 12600 CASE 24: InnerRADIUS = 23: RearINDEX = 14400 CASE 25: InnerRADIUS = 21: RearINDEX = 16200 END SELECT END IF Tire WheelRX + 100, WheelRY - 100, OuterRADIUS, InnerRADIUS DeLIGHT ShowMOUSE RETURN SetWHEELS: SELECT CASE Item CASE 26: File$ = "CHSpokes" CASE 27: File$ = "CHMag1" CASE 28: File$ = "CHMag2" CASE 29: File$ = "CHMag3" CASE 30: File$ = "CHMag4" END SELECT LoadFILE File$ HideMOUSE PUT (WheelFX - 140, WheelFY - 140), Box(FrontINDEX), PSET PUT (WheelRX + 60, WheelRY - 140), Box(RearINDEX), PSET DeLIGHT ShowMOUSE RETURN END SUB SUB Assembly2 SHARED ItemX, ItemY, Choice, Frame, Extension, FrameCOLOR, Cover, Tank SHARED ForkX, ForkY, WheelFX, WheelFY, WheelRX, WheelRY, BarX, BarY SHARED OuterRADIUS, InnerRADIUS, FrontINDEX, RearINDEX, FrameX, FrameY SHARED MotorSTYLE, HighMEG, HighPIPE, OT, LightX, LightY, FenderSTYLE SHARED FFLX, FFRX, FFTY, FFBY, RFLX, RFRX, RFTY, RFBY, GPaint, TX, TY, TTY SELECT CASE Phase CASE 8 SELECT CASE MouseX CASE 95 TO 225 IF Item <> 31 THEN DeLIGHT ItemX = 95: ItemY = 445 HiLIGHT Item = 31 END IF CASE 255 TO 385 IF Item <> 32 THEN DeLIGHT ItemX = 255: ItemY = 445 HiLIGHT Item = 32 END IF CASE 415 TO 545 IF Item <> 33 THEN DeLIGHT ItemX = 415: ItemY = 445 HiLIGHT Item = 33 END IF CASE ELSE DeLIGHT END SELECT CASE 9 SELECT CASE MouseX CASE 135 TO 235 IF Item <> 34 THEN DeLIGHT ItemX = 110: ItemY = 420 HiLIGHT Item = 34 END IF CASE 268 TO 368 IF Item <> 35 THEN DeLIGHT ItemX = 246: ItemY = 420 HiLIGHT Item = 35 END IF CASE 400 TO 500 IF Item <> 36 THEN DeLIGHT ItemX = 382: ItemY = 420 HiLIGHT Item = 36 END IF CASE ELSE DeLIGHT END SELECT CASE 10 SELECT CASE MouseX CASE 124 TO 234 IF Item <> 37 THEN DeLIGHT ItemX = 114: ItemY = 424 HiLIGHT Item = 37 END IF CASE 278 TO 358 IF Item <> 38 THEN DeLIGHT ItemX = 268: ItemY = 424 HiLIGHT Item = 38 END IF CASE 406 TO 516 IF Item <> 39 THEN DeLIGHT ItemX = 396: ItemY = 424 HiLIGHT Item = 39 END IF CASE ELSE DeLIGHT END SELECT CASE 11 SELECT CASE MouseX CASE 120 TO 219 IF Item <> 40 THEN DeLIGHT ItemX = 100: ItemY = 398 HiLIGHT Item = 40 END IF CASE 220 TO 319 IF Item <> 41 THEN DeLIGHT ItemX = 210: ItemY = 398 HiLIGHT Item = 41 END IF CASE 320 TO 419 IF Item <> 42 THEN DeLIGHT ItemX = 310: ItemY = 398 HiLIGHT Item = 42 END IF CASE 420 TO 519 IF Item <> 43 THEN DeLIGHT ItemX = 420: ItemY = 398 HiLIGHT Item = 43 END IF CASE ELSE DeLIGHT END SELECT CASE 12 SELECT CASE MouseX CASE 120 TO 219 IF Item <> 44 THEN DeLIGHT ItemX = 100: ItemY = 398 HiLIGHT Item = 44 END IF CASE 220 TO 319 IF Item <> 45 THEN DeLIGHT ItemX = 200: ItemY = 398 HiLIGHT Item = 45 END IF CASE 320 TO 419 IF Item <> 46 THEN DeLIGHT ItemX = 300: ItemY = 398 HiLIGHT Item = 46 END IF CASE 420 TO 519 IF Item <> 146 THEN DeLIGHT ItemX = 400: ItemY = 398 HiLIGHT Item = 146 END IF CASE ELSE DeLIGHT END SELECT CASE 13 SELECT CASE MouseX CASE 110 TO 219 IF Item <> 47 THEN DeLIGHT ItemX = 100: ItemY = 390 HiLIGHT Item = 47 END IF CASE 220 TO 329 IF Item <> 48 THEN DeLIGHT ItemX = 220: ItemY = 390 HiLIGHT Item = 48 END IF CASE 330 TO 439 IF Item <> 49 THEN DeLIGHT ItemX = 330: ItemY = 390 HiLIGHT Item = 49 END IF CASE 440 TO 549 IF Item <> 50 THEN DeLIGHT ItemX = 430: ItemY = 390 HiLIGHT Item = 50 END IF CASE ELSE DeLIGHT END SELECT CASE 14 SELECT CASE MouseX CASE 178 TO 308 IF Item <> 51 THEN DeLIGHT ItemX = 178: ItemY = 408 HiLIGHT Item = 51 END IF CASE 338 TO 468 IF Item <> 52 THEN DeLIGHT ItemX = 338: ItemY = 408 HiLIGHT Item = 52 END IF CASE ELSE DeLIGHT END SELECT CASE 15 SELECT CASE MouseX CASE 90 TO 220 IF Item <> 53 THEN DeLIGHT ItemX = 90: ItemY = 411 HiLIGHT Item = 53 END IF CASE 250 TO 380 IF Item <> 54 THEN DeLIGHT ItemX = 250: ItemY = 411 HiLIGHT Item = 54 END IF CASE 412 TO 542 IF Item <> 55 THEN DeLIGHT ItemX = 412: ItemY = 411 HiLIGHT Item = 55 END IF CASE ELSE DeLIGHT END SELECT CASE 16 SELECT CASE MouseX CASE 40 TO 223 IF Item <> 56 THEN DeLIGHT ItemX = 70: ItemY = 410 HiLIGHT Item = 56 END IF CASE 224 TO 409 IF Item <> 57 THEN DeLIGHT ItemX = 250: ItemY = 410 HiLIGHT Item = 57 END IF CASE 410 TO 600 IF Item <> 58 THEN DeLIGHT ItemX = 430: ItemY = 410 HiLIGHT Item = 58 END IF CASE ELSE DeLIGHT END SELECT CASE 17 SELECT CASE MouseX CASE 50 TO 200 IF Item <> 59 THEN DeLIGHT ItemX = 60: ItemY = 428 HiLIGHT Item = 59 END IF CASE 230 TO 380 IF Item <> 60 THEN DeLIGHT ItemX = 240: ItemY = 428 HiLIGHT Item = 60 END IF CASE 410 TO 560 IF Item <> 61 THEN DeLIGHT ItemX = 420: ItemY = 428 HiLIGHT Item = 61 END IF CASE ELSE DeLIGHT END SELECT CASE 18 SELECT CASE MouseX CASE 65 TO 164 IF Item <> 62 THEN DeLIGHT ItemX = 50: ItemY = 412 HiLIGHT Item = 62 END IF CASE 165 TO 264 IF Item <> 63 THEN DeLIGHT ItemX = 150: ItemY = 412 HiLIGHT Item = 63 END IF CASE 265 TO 364 IF Item <> 64 THEN DeLIGHT ItemX = 250: ItemY = 412 HiLIGHT Item = 64 END IF CASE 365 TO 464 IF Item <> 65 THEN DeLIGHT ItemX = 350: ItemY = 412 HiLIGHT Item = 65 END IF CASE 465 TO 564 IF Item <> 66 THEN DeLIGHT ItemX = 450: ItemY = 412 HiLIGHT Item = 66 END IF CASE ELSE DeLIGHT END SELECT CASE 19 SELECT CASE MouseX CASE 60 TO 139 IF Item <> 67 THEN DeLIGHT ItemX = 20: ItemY = 396 HiLIGHT Item = 67 END IF CASE 140 TO 219 IF Item <> 68 THEN DeLIGHT ItemX = 125: ItemY = 396 HiLIGHT Item = 68 END IF CASE 240 TO 319 IF Item <> 69 THEN DeLIGHT ItemX = 202: ItemY = 396 HiLIGHT Item = 69 END IF CASE 320 TO 399 IF Item <> 70 THEN DeLIGHT ItemX = 304: ItemY = 396 HiLIGHT Item = 70 END IF CASE 420 TO 499 IF Item <> 71 THEN DeLIGHT ItemX = 384: ItemY = 396 HiLIGHT Item = 71 END IF CASE 500 TO 579 IF Item <> 72 THEN DeLIGHT ItemX = 490: ItemY = 396 HiLIGHT Item = 72 END IF CASE ELSE DeLIGHT END SELECT CASE 20 SELECT CASE MouseX CASE 140 TO 219 IF Item <> 67 THEN DeLIGHT ItemX = 100: ItemY = 396 HiLIGHT Item = 67 END IF CASE 220 TO 299 IF Item <> 68 THEN DeLIGHT ItemX = 210: ItemY = 396 HiLIGHT Item = 68 END IF CASE 340 TO 419 IF Item <> 69 THEN DeLIGHT ItemX = 290: ItemY = 396 HiLIGHT Item = 69 END IF CASE 420 TO 499 IF Item <> 70 THEN DeLIGHT ItemX = 420: ItemY = 396 HiLIGHT Item = 70 END IF CASE ELSE DeLIGHT END SELECT END SELECT IF LB = -1 AND Item <> 0 THEN SELECT CASE Item CASE 31 LoadFILE "CHFndrFS": GOSUB FrontWHEEL LoadFILE "CHFndrRS": GOSUB RearWHEEL FenderSTYLE = 1 GOSUB Transfer CASE 32 LoadFILE "CHFndrFC": GOSUB FrontWHEEL LoadFILE "CHFndrRC": GOSUB RearWHEEL FenderSTYLE = 2 GOSUB Transfer CASE 33 LoadFILE "CHFndrFF": GOSUB FrontWHEEL LoadFILE "CHFndrRF": GOSUB RearWHEEL FenderSTYLE = 3 GOSUB Transfer CASE 34 HideMOUSE IF Frame = 2 THEN GET (FrameX + 100, FrameY + 40)-STEP(20, 30), Box() PUT (FrameX + 70, FrameY + 25), Box(), PSET LINE (FrameX + 90, FrameY + 110)-STEP(40, 2), 0, BF CIRCLE (FrameX + 53, FrameY + 108), 3, 2 PAINT STEP(0, 0), 4, 2 CIRCLE (FrameX + 53, FrameY + 108), 2, 15, 0, 3 LINE (FrameX + 50, FrameY + 101)-STEP(1, 1), 4, B CIRCLE (FrameX + 53, FrameY + 108), 3, 5, 3, 0 LINE STEP(-2, 0)-STEP(4, 0), 3 END IF LoadFILE "CHMtr750.BSI" MotorSTYLE = 1 GOSUB InstallMOTOR DeLIGHT ShowMOUSE Phase = 15 CASE 35 HideMOUSE DeLIGHT ShowMOUSE MotorSTYLE = 2 Phase = 10 CASE 36 HideMOUSE DeLIGHT ShowMOUSE MotorSTYLE = 3 Phase = 10 CASE 37 IF MotorSTYLE = 2 THEN LoadFILE "CHMtrVKP.BSI" ELSE LoadFILE "CHMtrVBP.BSI" END IF GOSUB InstallMOTOR CASE 38 IF MotorSTYLE = 2 THEN LoadFILE "CHMtrVKB.BSI" ELSE LoadFILE "CHMtrVBB.BSI" END IF GOSUB InstallMOTOR CASE 39 IF MotorSTYLE = 2 THEN LoadFILE "CHMtrVKC.BSI" ELSE LoadFILE "CHMtrVBC.BSI" END IF GOSUB InstallMOTOR CASE 40 HideMOUSE LoadBSI FrameX, FrameY, "CHDrvCH" LoadFILE "CHShdowD.BSI" PUT (FrameX + Box(0), 268), Box(3), AND PUT (FrameX + Box(0), 268), Box(Box(2)) DeLIGHT ShowMOUSE Phase = 13 CASE 41 TO 43 HideMOUSE IF Item = 41 THEN LoadBSI FrameX, FrameY, "CHDrvBP" IF Item = 42 THEN LoadBSI FrameX, FrameY, "CHDrvBB" IF Item = 43 THEN LoadBSI FrameX, FrameY, "CHDrvBC" LoadFILE "CHShdowD.BSI" PUT (FrameX + Box(0), 268), Box(3), AND PUT (FrameX + Box(0), 268), Box(Box(2)) DeLIGHT ShowMOUSE Phase = 12 CASE 44, 45, 46, 146 HideMOUSE IF Item = 44 THEN LoadBSI FrameX, FrameY, "CHDrvCP": Cover = 1 IF Item = 45 THEN LoadBSI FrameX, FrameY, "CHDrvCB" IF Item = 46 THEN LoadBSI FrameX, FrameY, "CHDrvCC" DeLIGHT ShowMOUSE Phase = 13 CASE 47 TO 50 HideMOUSE IF Item = 47 THEN LoadBSI FrameX, FrameY, "CHBrthr3" IF Item = 48 THEN LoadBSI FrameX, FrameY, "CHBrthr4" IF Item = 49 THEN LoadBSI FrameX, FrameY, "CHBrthr1" IF Item = 50 THEN LoadBSI FrameX, FrameY, "CHBrthr2" DeLIGHT ShowMOUSE Phase = 14 CASE 51, 52 IF Frame = 1 THEN IF Item = 51 THEN FileNAME$ = "CHRDrRVC" IF Item = 52 THEN FileNAME$ = "CHRDrRVB" ELSE IF Item = 51 THEN FileNAME$ = "CHRDrXVC" IF Item = 52 THEN FileNAME$ = "CHRDrXVB" END IF HideMOUSE LoadBSI FrameX, FrameY, FileNAME$ DeLIGHT ShowMOUSE Phase = 17 CASE 53 TO 55 IF Frame = 1 THEN IF Item = 53 THEN FileNAME$ = "CHRDrR7O" IF Item = 54 THEN FileNAME$ = "CHRDrR7P": GPaint = 1 IF Item = 55 THEN FileNAME$ = "CHRDrR7C" ELSE IF Item = 53 THEN FileNAME$ = "CHRDrX7O" IF Item = 54 THEN FileNAME$ = "CHRDrX7P": GPaint = 1 IF Item = 55 THEN FileNAME$ = "CHRDrX7C" END IF HideMOUSE LoadBSI FrameX, FrameY, FileNAME$ DeLIGHT ShowMOUSE Phase = 16 CASE 56 TO 58 HideMOUSE IF Item = 56 THEN LoadBSI FrameX, FrameY, "CHExBLST" IF Item = 57 THEN LoadBSI FrameX, FrameY, "CHExBHMG": HighMEG = 1 IF Item = 58 THEN LoadBSI FrameX, FrameY, "CHExBLMG" IF Frame = 1 THEN ShadowDROP = 11 ELSE ShadowDROP = 0 LoadBSI FrameX, FrameY + ShadowDROP, "CHShdo7X" DeLIGHT ShowMOUSE Phase = 18 CASE 59 TO 61 HideMOUSE IF Item = 59 THEN LoadBSI FrameX, FrameY, "CHExVLMG": Extend = 0 IF Item = 60 THEN LoadBSI FrameX, FrameY, "CHExVLSH": Extend = -20 IF Item = 61 THEN LoadBSI FrameX, FrameY, "CHExVHOS": Extend = 60: HighPIPE = 1 IF Frame = 1 THEN ShadowDROP = 11 ELSE ShadowDROP = 0 LoadBSI FrameX + 12, FrameY + 44 + ShadowDROP, "CHShdoVX" LINE (FrameX + 120, FrameY + 143 + ShadowDROP)-(FrameX + 200 + Extend, FrameY + 147 + ShadowDROP), 5, BF DRAW "R5 H5 D5 R bU p5,5" DeLIGHT ShowMOUSE Phase = 18 CASE 62 TO 66 IF Frame = 1 THEN TankY = 5 ELSE TankY = 0 HideMOUSE IF Item = 62 THEN LoadBSI FrameX, FrameY + TankY, "CHFTnkTD" Tank = 1: TX = 2: TY = 2 + TankY IF Frame = 1 THEN TTY = 5 ELSE TTY = 0 END IF IF Item = 63 THEN LoadBSI FrameX, FrameY, "CHFTnkSC" TX = 4: Tank = 2: TY = 6 + TankY TTY = 0 END IF IF Item = 64 THEN LoadBSI FrameX, FrameY + TankY, "CHFTnkOS" Tank = 3: TX = 0: TY = TankY IF Frame = 1 THEN TTY = 4 ELSE TTY = 0 END IF IF Item = 65 THEN LoadBSI FrameX, FrameY + TankY, "CHFTnkCB" Tank = 4: TX = 10: TY = 3 + TankY IF Frame = 1 THEN TTY = 4 ELSE TTY = 0 END IF IF Item = 66 THEN LoadBSI FrameX, FrameY + TankY, "CHFTnkBR" Tank = 5 TX = 2 TTY = 4 IF Frame = 1 THEN TY = 12 ELSE TY = 7 IF Frame = 1 THEN TTY = 4 ELSE TTY = 0 END IF DeLIGHT ClearBOX IF MotorSTYLE = 1 AND Frame = 1 THEN Phase = 19 ELSE Phase = 20 END IF ShowMOUSE CASE 67 TO 72 HideMOUSE IF Item = 67 THEN LoadBSI FrameX, FrameY, "CHOTnkHP": OT = 1 IF Item = 68 THEN LoadBSI FrameX, FrameY, "CHOTnkHC": OT = 2 IF Item = 69 THEN LoadBSI FrameX, FrameY, "CHOTnkCP": OT = 3 IF Item = 70 THEN LoadBSI FrameX, FrameY, "CHOTnkCC": OT = 4 IF Item = 71 THEN LoadBSI FrameX, FrameY, "CHOTnkBP": OT = 5 IF Item = 72 THEN LoadBSI FrameX, FrameY, "CHOTnkBC": OT = 6 IF HighMEG = 1 THEN LoadBSI FrameX, FrameY, "CHExBHMG" HighMEG = 0 END IF DeLIGHT FOR x = BarX - 40 TO BarX - 10 FOR y = BarY + 10 TO BarY + 40 IF POINT(x, y) = 14 THEN LightX = x LightY = y PSET (x, y), 15 GOTO Continue END IF NEXT y NEXT x Continue: ShowMOUSE Phase = 21 END SELECT END IF EXIT SUB '************************* SUBROUTINE SECTION BEGINS ************************ FrontWHEEL: HideMOUSE PUT (WheelFX - 153, WheelFY - 157), Box(3200), AND PUT (WheelFX - 153, WheelFY - 157), Box() ShowMOUSE RETURN RearWHEEL: HideMOUSE PUT (WheelRX + 45, WheelRY - 155), Box(3200), AND PUT (WheelRX + 45, WheelRY - 155), Box() DeLIGHT ShowMOUSE RETURN Transfer: HideMOUSE LoadIMAGE 170, 80, "CHPrepAR" LoadIMAGE 170, 80, "CHInstW" FFLX = Seeker(WheelFX - 153, WheelFY - 157, 0) FFRX = Seeker(WheelFX - 153, WheelFY - 157, 1) FFTY = Seeker(WheelFX - 153, WheelFY - 157, 2) FFBY = Seeker(WheelFX - 153, WheelFY - 157, 3) OPEN "ff.dat" FOR OUTPUT AS #1 WRITE #1, FFLX + 100, FFRX - FFLX, FFTY + 100, FFBY - FFTY FOR x = FFLX TO FFRX FOR y = FFTY TO FFBY IF POINT(x + 100, y + 100) = 0 THEN WRITE #1, 1 ELSE WRITE #1, 0 NEXT y NEXT x CLOSE #1 PSET (WheelFX - 43, WheelFY + 48), 5 DRAW "R91 M+2,-5 L85 M-8,+5 R10 BU2 P5,5" FOR x = WheelFX - 153 TO WheelFX - 43 FOR y = WheelFY - 157 TO WheelFY - 47 IF POINT(x, y) <> 0 THEN IF y < WheelFY - 72 THEN IF POINT(x + 100, y + 100) = 0 THEN PSET (x + 100, y + 100), POINT(x, y) END IF ELSE PSET (x + 100, y + 100), POINT(x, y) END IF PSET (x, y), 0 END IF NEXT y NEXT x RFLX = Seeker(WheelRX + 45, WheelRY - 157, 0) RFRX = Seeker(WheelRX + 45, WheelRY - 157, 1) RFTY = Seeker(WheelRX + 45, WheelRY - 157, 2) RFBY = Seeker(WheelRX + 45, WheelRY - 157, 3) OPEN "rf.dat" FOR OUTPUT AS #1 WRITE #1, RFLX - 100, RFRX - RFLX, RFTY + 100, RFBY - RFTY FOR x = RFLX TO RFRX FOR y = RFTY TO RFBY IF POINT(x - 100, y + 100) = 0 THEN WRITE #1, 1 ELSE WRITE #1, 0 NEXT y NEXT x CLOSE #1 IF Frame = 2 THEN PSET (WheelRX - 43, WheelRY + 42), 5 ELSE PSET (WheelRX - 43, WheelRY + 48), 5 END IF DRAW "R91 M-8,-5 L88 F5 R20 BU3 P5,5" FOR x = WheelRX + 45 TO WheelRX + 155 FOR y = WheelRY - 155 TO WheelRY - 45 IF POINT(x, y) <> 0 THEN IF y < WheelRY - 72 THEN IF POINT(x - 100, y + 100) = 0 THEN PSET (x - 100, y + 100), POINT(x, y) END IF ELSE PSET (x - 100, y + 100), POINT(x, y) END IF PSET (x, y), 0 END IF NEXT y NEXT x LoadIMAGE 170, 80, "CHInstW" ShowMOUSE Phase = 9 RETURN InstallMOTOR: HideMOUSE PUT (FrameX + Box(0), FrameY + Box(1)), Box(3), AND PUT (FrameX + Box(0), FrameY + Box(1)), Box(Box(2)) IF MotorSTYLE = 1 THEN LoadFILE "CHShdow7.BSI" PUT (FrameX + Box(0), 251), Box(3), AND PUT (FrameX + Box(0), 251), Box(Box(2)) ELSE IF Frame = 1 THEN SELECT CASE FrameCOLOR CASE 1: Colr1 = 6: Colr2 = 13 CASE 2: Colr1 = 5: Colr2 = 2 CASE 3: Colr1 = 4: Colr2 = 15 END SELECT PSET (FrameX + Box(0) + 32, FrameY + Box(1)), Colr1 DRAW "U8 M+4,+2 D6 L4 BE2 P" + LTRIM$(STR$(Colr1)) + "," + LTRIM$(STR$(Colr1)) PSET (FrameX + Box(0) + 32, FrameY + Box(1)), Colr2 DRAW "U7" END IF LoadBSI FrameX, FrameY, "CHLnkage" LoadFILE "CHShdowP.BSI" PUT (FrameX + Box(0), 254), Box(3), AND PUT (FrameX + Box(0), 254), Box(Box(2)) LoadFILE "CHShdowV.BSI" PUT (FrameX + Box(0), 254), Box(3), AND PUT (FrameX + Box(0), 254), Box(Box(2)) END IF DeLIGHT IF MotorSTYLE > 1 THEN END IF ShowMOUSE Phase = 11 RETURN END SUB SUB Assembly3 SHARED ItemX, ItemY, Choice, Frame, Extension, FrameCOLOR SHARED ForkX, ForkY, WheelFX, WheelFY, WheelRX, WheelRY, BarX, BarY SHARED OuterRADIUS, InnerRADIUS, FrontINDEX, RearINDEX, FrameX, FrameY SHARED MotorSTYLE, HighMEG, HighPIPE, OT, LightX, LightY, FenderSTYLE SHARED FFLX, FFRX, FFTY, FFBY, RFLX, RFRX, RFTY, RFBY SELECT CASE Phase CASE 22 SELECT CASE MouseX CASE 15 TO 114 IF Item <> 73 THEN DeLIGHT ItemX = 12: ItemY = 406 HiLIGHT Item = 73 END IF CASE 115 TO 214 IF Item <> 74 THEN DeLIGHT ItemX = 98: ItemY = 406 HiLIGHT Item = 74 END IF CASE 215 TO 314 IF Item <> 75 THEN DeLIGHT ItemX = 200: ItemY = 406 HiLIGHT Item = 75 END IF CASE 315 TO 409 IF Item <> 76 THEN DeLIGHT ItemX = 300: ItemY = 406 HiLIGHT Item = 76 END IF CASE 410 TO 519 IF Item <> 77 THEN DeLIGHT ItemX = 400: ItemY = 406 HiLIGHT Item = 77 END IF CASE 520 TO 624 IF Item <> 78 THEN DeLIGHT ItemX = 497: ItemY = 406 HiLIGHT Item = 78 END IF CASE ELSE DeLIGHT END SELECT CASE 23 SELECT CASE MouseX CASE 60 TO 139 IF Item <> 79 THEN DeLIGHT ItemX = 20: ItemY = 394 HiLIGHT Item = 79 END IF CASE 140 TO 219 IF Item <> 80 THEN DeLIGHT ItemX = 126: ItemY = 394 HiLIGHT Item = 80 END IF CASE 240 TO 319 IF Item <> 81 THEN DeLIGHT ItemX = 204: ItemY = 394 HiLIGHT Item = 81 END IF CASE 320 TO 399 IF Item <> 82 THEN DeLIGHT ItemX = 306: ItemY = 394 HiLIGHT Item = 82 END IF CASE 420 TO 499 IF Item <> 83 THEN DeLIGHT ItemX = 386: ItemY = 394 HiLIGHT Item = 83 END IF CASE 500 TO 580 IF Item <> 84 THEN DeLIGHT ItemX = 486: ItemY = 394 HiLIGHT Item = 84 END IF CASE ELSE DeLIGHT END SELECT CASE 24 SELECT CASE MouseX CASE 125 TO 235 IF Item <> 85 THEN DeLIGHT ItemX = 115: ItemY = 420 HiLIGHT Item = 85 END IF CASE 265 TO 375 IF Item <> 86 THEN DeLIGHT ItemX = 255: ItemY = 420 HiLIGHT Item = 86 END IF CASE 405 TO 515 IF Item <> 87 THEN DeLIGHT ItemX = 395: ItemY = 420 HiLIGHT Item = 87 END IF CASE ELSE DeLIGHT END SELECT END SELECT IF LB = -1 AND Item <> 0 THEN SELECT CASE Item CASE 73 TO 78 IF Frame = 1 THEN SeatUP = -2 ELSE SeatUP = 0 HideMOUSE IF Item = 73 THEN LoadBSI FrameX, FrameY + SeatUP, "CHStOSHP" IF Item = 74 THEN LoadBSI FrameX, FrameY + SeatUP, "CHStOSHS" IF Item = 75 THEN LoadBSI FrameX, FrameY + SeatUP, "CHStOSLP" IF Item = 76 THEN LoadBSI FrameX, FrameY + SeatUP, "CHStOSLS" IF Item = 77 THEN IF Frame = 1 THEN LoadBSI FrameX + 10, FrameY + 15, "CHStBNAR" CIRCLE (FrameX + 156, FrameY + 64), 4, 15, 1, 3 PSET STEP(2, -4), 3 PSET STEP(-4, 0), 3 ELSE SELECT CASE FrameCOLOR CASE 1: LoadBSI FrameX + 4, FrameY + 2, "CHStBNAP" CASE 2: LoadBSI FrameX + 4, FrameY + 2, "CHStBNAB" CASE 3: LoadBSI FrameX + 4, FrameY + 2, "CHStBNAC" END SELECT END IF END IF IF Item = 78 THEN IF Frame = 1 THEN SELECT CASE FrameCOLOR CASE 1: LoadBSI FrameX + 8, FrameY + 4, "CHStCHPP" CASE 2: LoadBSI FrameX + 8, FrameY + 4, "CHStCHPB" CASE 3: LoadBSI FrameX + 8, FrameY + 4, "CHStCHPC" END SELECT IF OT > 4 THEN IF OT = 5 THEN LoadBSI FrameX, FrameY, "CHOTnkBP" IF OT = 6 THEN LoadBSI FrameX, FrameY, "CHOTnkBC" IF HighMEG THEN LoadBSI FrameX, FrameY, "CHExBHMG" END IF ELSE LoadBSI FrameX + 8, FrameY + 4, "CHStCHPE" END IF END IF DeLIGHT ShowMOUSE Phase = 23 CASE 79 TO 84 HideMOUSE IF Item = 79 THEN LoadBSI LightX, LightY, "CHHDLTLP" IF Item = 80 THEN LoadBSI LightX, LightY, "CHHDLTLC" IF Item = 81 THEN LoadBSI LightX, LightY, "CHHDLTSP" IF Item = 82 THEN LoadBSI LightX, LightY, "CHHDLTSC" IF Item = 83 THEN LoadBSI LightX, LightY, "CHHDLTCP" IF Item = 84 THEN LoadBSI LightX, LightY, "CHHDLTCC" DeLIGHT ShowMOUSE Phase = 24 CASE 85 TO 87 HideMOUSE SELECT CASE FenderSTYLE CASE 1 IF Item = 85 THEN LoadBSI WheelRX, WheelRY, "CHTLLTSP" IF Item = 86 THEN LoadBSI WheelRX, WheelRY, "CHTLLTSC" IF HighPIPE = 1 THEN LoadBSI FrameX, FrameY, "CHExVHOS" CASE 2 IF Item = 85 THEN LoadBSI WheelRX, WheelRY, "CHTLLTCP" IF Item = 86 THEN LoadBSI WheelRX, WheelRY, "CHTLLTCC" CASE 3 IF Item = 85 THEN LoadBSI WheelRX, WheelRY, "CHTLLTFP" IF Item = 86 THEN LoadBSI WheelRX, WheelRY, "CHTLLTFC" END SELECT DeLIGHT ShowMOUSE Phase = 25 END SELECT END IF END SUB SUB ChopperIDE FOR Colr = 8 TO 14 OUT &H3C8, Colr OUT &H3C9, 63 - nn / 4 OUT &H3C9, 24 - nn OUT &H3C9, 0 nn = nn + 4 NEXT Colr DEF SEG = VARSEG(Box(0)) FOR y = 0 TO 320 STEP 160 FileCOUNT = FileCOUNT + 1 FileNAME$ = "chide" + LTRIM$(STR$(FileCOUNT)) + ".bsv" BLOAD FileNAME$, VARPTR(Box(0)) PUT (0, y), Box() NEXT y DEF SEG END SUB SUB ClearBOX LINE (11, 295)-(628, 469), 0, BF END SUB SUB ClearMOUSE WHILE LB OR RB MouseSTATUS LB, RB, MouseX, MouseY WEND END SUB SUB DeLIGHT SHARED ItemX, ItemY IF Item THEN HideMOUSE PUT (ItemX, ItemY), MenuBOX(), PSET ShowMOUSE Item = 0 END IF END SUB SUB FieldMOUSE (x1, y1, x2, y2) MouseDRIVER 7, 0, x1, x2 MouseDRIVER 8, 0, y1, y2 END SUB SUB FourBIT (x1%, y1%, x2%, y2%, FileNAME$) DIM FileCOLORS%(1 TO 48) DIM Colors4%(15) GraphX = 314 FOR x = x1% TO x2% FOR y = y1% TO y2% Colors4%(POINT(x, y)) = 1 NEXT y LINE (GraphX, 323)-(GraphX, 331), 11 IF x MOD 11 = 0 THEN GraphX = GraphX + 1 NEXT x FOR n = 0 TO 15 IF Colors4%(n) = 1 THEN SigCOLORS& = SigCOLORS& + 1 NEXT n FileTYPE$ = "BM" Reserved1% = 0 Reserved2% = 0 OffsetBITS& = 118 InfoHEADER& = 40 PictureWIDTH& = x2% - x1% + 1 PictureDEPTH& = y2% - y1% + 1 NumPLANES% = 1 BPP% = 4 Compression& = 0 WidthPELS& = 3780 DepthPELS& = 3780 NumCOLORS& = 16 IF PictureWIDTH& MOD 8 <> 0 THEN ZeroPAD$ = SPACE$((8 - PictureWIDTH& MOD 8) \ 2) END IF ImageSIZE& = (((ImageWIDTH& + LEN(ZeroPAD$)) * ImageDEPTH&) + .1) / 2 FileSIZE& = ImageSIZE& + OffsetBITS& Colr = 0 FOR n = 1 TO 48 STEP 3 OUT &H3C7, Colr FileCOLORS%(n) = INP(&H3C9) FileCOLORS%(n + 1) = INP(&H3C9) FileCOLORS%(n + 2) = INP(&H3C9) Colr = Colr + 1 NEXT n OPEN FileNAME$ FOR BINARY AS #1 PUT #1, , FileTYPE$ PUT #1, , FileSIZE& PUT #1, , Reserved1% 'should be zero PUT #1, , Reserved2% 'should be zero PUT #1, , OffsetBITS& PUT #1, , InfoHEADER& PUT #1, , PictureWIDTH& PUT #1, , PictureDEPTH& PUT #1, , NumPLANES% PUT #1, , BPP% PUT #1, , Compression& PUT #1, , ImageSIZE& PUT #1, , WidthPELS& PUT #1, , DepthPELS& PUT #1, , NumCOLORS& PUT #1, , SigCOLORS& u$ = " " FOR n% = 1 TO 46 STEP 3 Colr$ = CHR$(FileCOLORS%(n% + 2) * 4) PUT #1, , Colr$ Colr$ = CHR$(FileCOLORS%(n% + 1) * 4) PUT #1, , Colr$ Colr$ = CHR$(FileCOLORS%(n%) * 4) PUT #1, , Colr$ PUT #1, , u$ 'Unused byte NEXT n% FOR y = y2% TO y1% STEP -1 FOR x = x1% TO x2% STEP 2 HiX = POINT(x, y) LoX = POINT(x + 1, y) HiNIBBLE$ = HEX$(HiX) LoNIBBLE$ = HEX$(LoX) HexVAL$ = "&H" + HiNIBBLE$ + LoNIBBLE$ a$ = CHR$(VAL(HexVAL$)) PUT #1, , a$ NEXT x PUT #1, , ZeroPAD$ IF y MOD 3 = 0 THEN LINE (GraphX, 323)-(GraphX, 331), 11 GraphX = GraphX + 1 END IF NEXT y CLOSE #1 END SUB SUB HandleBARS (InOUT) SHARED BarX, BarY, GotBOX IF InOUT = 0 THEN GOSUB DeBOX: EXIT SUB SELECT CASE MouseY CASE 332 TO 414 SELECT CASE MouseX CASE 12 TO 87 IF BarBOX <> 1 THEN GOSUB DeBOX BarBOX = 1 GOSUB BoxIT END IF CASE 89 TO 164 IF BarBOX <> 2 THEN GOSUB DeBOX BarBOX = 2 GOSUB BoxIT END IF CASE 166 TO 241 IF BarBOX <> 3 THEN GOSUB DeBOX BarBOX = 3 GOSUB BoxIT END IF CASE 243 TO 318 IF MouseY < 374 THEN IF BarBOX <> 4 THEN GOSUB DeBOX BarBOX = 4 GOSUB BoxIT END IF ELSE IF BarBOX <> 5 THEN GOSUB DeBOX BarBOX = 5 GOSUB BoxIT END IF END IF CASE 320 TO 395 IF BarBOX <> 6 THEN GOSUB DeBOX BarBOX = 6 GOSUB BoxIT END IF CASE 397 TO 472 IF BarBOX <> 7 THEN GOSUB DeBOX BarBOX = 7 GOSUB BoxIT END IF CASE 474 TO 549 IF BarBOX <> 8 THEN GOSUB DeBOX BarBOX = 8 GOSUB BoxIT END IF CASE 551 TO 626 IF BarBOX <> 9 THEN GOSUB DeBOX BarBOX = 9 GOSUB BoxIT END IF END SELECT CASE 423 TO 439 IF MouseX > 277 AND MouseX < 349 THEN IF LB = -1 THEN HideMOUSE GET (278, 423)-(358, 439), MenuBOX() LINE (278, 423)-(358, 439), 4, BF LINE (278, 423)-(278, 439), 3 LINE (278, 423)-(358, 423), 3 PrintSTRING 302, 426, "Accept" ShowMOUSE Interval .1 HideMOUSE PUT (278, 423), MenuBOX(), PSET ShowMOUSE IF GotBOX = 1 THEN DeLIGHT GOSUB DeBOX HideMOUSE OPEN "chcable.dat" FOR INPUT AS #1 INPUT #1, xx, yy FOR x = 0 TO xx FOR y = 0 TO yy INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x + BarX - 16, y + BarY + 24) = 0 THEN PSET (x + BarX - 16, y + BarY + 24), Colr END IF END IF NEXT y NEXT x CLOSE #1 ShowMOUSE Phase = 22 EXIT SUB END IF END IF END IF CASE ELSE GOSUB DeBOX END SELECT IF BarBOX <> 0 AND LB = -1 THEN HideMOUSE IF GotBOX = 1 THEN PUT (BarX - 10, BarY - 45), Box(24000), PSET: GotBOX = 0 GET (BarX - 10, BarY - 45)-(BarX + 66, BarY + 30), Box(24000): GotBOX = 1 SELECT CASE BarBOX CASE 1: LoadFILE "CHBar1.BSI" CASE 2: LoadFILE "CHBar2.BSI" CASE 3: LoadFILE "CHBar3.BSI" CASE 4: LoadFILE "CHBar4.BSI" CASE 5: LoadFILE "CHBar5.BSI" CASE 6: LoadFILE "CHBar6.BSI" CASE 7: LoadFILE "CHBar7.BSI" CASE 8: LoadFILE "CHBar8.BSI" CASE 9: LoadFILE "CHBar9.BSI" END SELECT PUT (BarX - Box(0), BarY - Box(1)), Box(3), AND PUT (BarX - Box(0), BarY - Box(1)), Box(Box(2)) ShowMOUSE END IF EXIT SUB DeBOX: IF BarBOX THEN HideMOUSE SELECT CASE BarBOX CASE 1: LINE (12, 332)-(87, 414), 3, B CASE 2: LINE (89, 332)-(164, 414), 3, B CASE 3: LINE (166, 332)-(241, 414), 3, B CASE 4: LINE (243, 332)-(318, 372), 3, B CASE 5: LINE (243, 374)-(318, 414), 3, B CASE 6: LINE (320, 332)-(395, 414), 3, B CASE 7: LINE (397, 332)-(472, 414), 3, B CASE 8: LINE (474, 332)-(549, 414), 3, B CASE 9: LINE (551, 332)-(626, 414), 3, B END SELECT ShowMOUSE BarBOX = 0 END IF RETURN BoxIT: HideMOUSE SELECT CASE BarBOX CASE 1: LINE (12, 332)-(87, 414), 15, B CASE 2: LINE (89, 332)-(164, 414), 15, B CASE 3: LINE (166, 332)-(241, 414), 15, B CASE 4: LINE (243, 332)-(318, 372), 15, B CASE 5: LINE (243, 374)-(318, 414), 15, B CASE 6: LINE (320, 332)-(395, 414), 15, B CASE 7: LINE (397, 332)-(472, 414), 15, B CASE 8: LINE (474, 332)-(549, 414), 15, B CASE 9: LINE (551, 332)-(626, 414), 15, B END SELECT ShowMOUSE RETURN END SUB SUB HelpMENU STATIC HelpITEM, HelpY, Instructions, CornerON DO MouseSTATUS LB, RB, MouseX, MouseY IF Instructions THEN SELECT CASE MouseX CASE 428 TO 456 SELECT CASE MouseY CASE 104 TO 118 IF CornerON <> 1 THEN GOSUB LightINSTR CornerON = 1 END IF CASE ELSE GOSUB DarkINSTR END SELECT CASE ELSE GOSUB DarkINSTR END SELECT IF CornerON AND LB = -1 THEN SELECT CASE Instructions CASE 1 LoadFILE "CHInstr2.BSV" Instructions = 2 HideMOUSE PUT (180, 100), Box(), PSET ShowMOUSE ClearMOUSE CornerON = 0 CASE 2 HideMOUSE PUT (180, 100), Box(13000), PSET ShowMOUSE Instructions = 0 END SELECT END IF ELSE SELECT CASE MouseX CASE 492 TO 584 SELECT CASE MouseY CASE 34 TO 55 GOSUB DarkHELP IF MouseX < 500 OR MouseX > 544 THEN GOSUB CloseHELP CASE 56 TO 71 IF HelpITEM <> 1 THEN GOSUB DarkHELP HelpY = 59 GOSUB LightHELP HelpITEM = 1 END IF CASE 72 TO 87 IF HelpITEM <> 2 THEN GOSUB DarkHELP HelpY = 75 GOSUB LightHELP HelpITEM = 2 END IF CASE ELSE: GOSUB CloseHELP END SELECT CASE ELSE: GOSUB CloseHELP END SELECT IF HelpITEM > 0 AND LB = -1 THEN SELECT CASE HelpITEM CASE 1 GOSUB DarkHELP MenuITEM = 0 MenuBAR 0 HideMOUSE GET (180, 100)-(460, 272), Box(13000) LoadFILE "CHInstr1.BSV" PUT (180, 100), Box(), PSET ShowMOUSE Instructions = 1 CASE 2 GOSUB DarkHELP MenuITEM = 0 MenuBAR 0 HideMOUSE GET (180, 100)-(460, 272), Box(13000) LoadFILE "CHAbout.BSV" PUT (180, 100), Box(), PSET ShowMOUSE Instructions = 2 END SELECT END IF END IF LOOP EXIT SUB LightHELP: HideMOUSE GET (498, HelpY)-(598, HelpY + 10), MenuBOX2() FOR x = 498 TO 598 FOR y = HelpY TO HelpY + 10 IF POINT(x, y) = 3 THEN PSET (x, y), 15 NEXT y NEXT x ShowMOUSE RETURN DarkHELP: IF HelpITEM THEN HideMOUSE PUT (498, HelpY), MenuBOX2(), PSET ShowMOUSE HelpITEM = 0 END IF RETURN LightINSTR: HideMOUSE FOR x = 428 TO 456 FOR y = 104 TO 118 IF POINT(x, y) = 3 THEN PSET (x, y), 15 NEXT y NEXT x ShowMOUSE RETURN DarkINSTR: IF CornerON <> 0 THEN HideMOUSE FOR x = 428 TO 456 FOR y = 104 TO 118 IF POINT(x, y) = 15 THEN PSET (x, y), 3 NEXT y NEXT x ShowMOUSE CornerON = 0 END IF RETURN CloseHELP: GOSUB DarkHELP MenuITEM = 0 MenuBAR 0 EXIT SUB RETURN END SUB SUB HideMOUSE LB = 2 MouseDRIVER LB, 0, 0, 0 END SUB SUB HiLIGHT SHARED ItemX, ItemY HideMOUSE GET (ItemX, ItemY)-(ItemX + 130, ItemY + 10), MenuBOX() FOR x = ItemX TO ItemX + 130 FOR y = ItemY TO ItemY + 10 IF POINT(x, y) <> 0 THEN PSET (x, y), 15 NEXT y NEXT x ShowMOUSE END SUB FUNCTION InitMOUSE LB = 0 MouseDRIVER LB, 0, 0, 0 InitMOUSE = LB END FUNCTION DEFSNG A-Z SUB Interval (Length!) OldTimer# = TIMER DO: LOOP UNTIL TIMER > OldTimer# + Length! WAIT &H3DA, 8 END SUB DEFINT A-Z SUB LoadBSI (x, y, FileNAME$) FileNAME$ = FileNAME$ + ".BSI" LoadFILE FileNAME$ WAIT &H3DA, 8 PUT (x + Box(0), y + Box(1)), Box(3), AND PUT (x + Box(0), y + Box(1)), Box(Box(2)) END SUB SUB LoadFILE (FileNAME$) IF INSTR(FileNAME$, ".") = 0 THEN FileNAME$ = FileNAME$ + ".BSV" DEF SEG = VARSEG(Box(0)) BLOAD LCASE$(FileNAME$), VARPTR(Box(0)) DEF SEG END SUB SUB LoadIMAGE (x, y, FileNAME$) IF INSTR(FileNAME$, ".") = 0 THEN FileNAME$ = FileNAME$ + ".BSV" DEF SEG = VARSEG(Box(0)) BLOAD LCASE$(FileNAME$), VARPTR(Box(0)) DEF SEG WAIT &H3DA, 8 PUT (x, y), Box() END SUB SUB LoadPHASE STATIC ExPHASE SHARED PX, PY, Trimmed, Style, MotorSTYLE SHARED Frame, FrameCOLOR, Extension, FenderSTYLE, BarBOX, GotBOX IF Phase <> ExPHASE THEN IF Phase = 1 THEN HideMOUSE LINE (20, 56)-(620, 200), 0, BF LINE (90, 201)-(549, 280), 0, BF LINE (90, 252)-(549, 280), 2, BF ShowMOUSE END IF HideMOUSE ClearBOX SELECT CASE Phase CASE 1 BarBOX = 0: GotBOX = 0: ImageLOADED = 0 PX = 0: PY = 0: Trimmed = 0: Style = 0 BikeCOLOR = 3: FlameSTYLE = 1: SetPALETTE LoadIMAGE 116, 300, "CHFrames" CASE 2 IF Frame = 1 THEN LoadIMAGE 18, 300, "CHFrmCLR" ELSE LoadIMAGE 18, 300, "CHFrmCLX" END IF CASE 3 SELECT CASE FrameCOLOR CASE 1 IF Frame = 1 THEN LoadIMAGE 112, 300, "CHExtRP" ELSE LoadIMAGE 112, 300, "CHExtXP" END IF CASE 2 IF Frame = 1 THEN LoadIMAGE 112, 300, "CHExtRB" ELSE LoadIMAGE 112, 300, "CHExtXB" END IF CASE 3 IF Frame = 1 THEN LoadIMAGE 112, 300, "CHExtRC" ELSE LoadIMAGE 112, 300, "CHExtXC" END IF END SELECT CASE 4 SELECT CASE Extension CASE 1: LoadIMAGE 53, 300, "CHFrksR" CASE 2: LoadIMAGE 53, 300, "CHFrksX" CASE 3: LoadIMAGE 20, 300, "CHFrksXX" END SELECT CASE 5 LoadIMAGE 89, 312, "CHTiresF" CASE 6 LoadIMAGE 170, 80, "CHPrepAR" IF Frame = 1 THEN LoadIMAGE 89, 312, "CHTireRR" ELSE LoadIMAGE 89, 312, "CHTireRX" END IF CASE 7 LoadIMAGE 70, 310, "CHWheels" CASE 8 LoadIMAGE 88, 305, "CHFndrs" CASE 9 LoadIMAGE 140, 320, "CHMotors" CASE 10 IF MotorSTYLE = 2 THEN LoadIMAGE 144, 320, "CHMtrKCL" ELSE LoadIMAGE 144, 320, "CHMtrBCL" END IF CASE 11 LoadIMAGE 137, 320, "CHDrives" CASE 12 LoadIMAGE 142, 330, "CHBDCvrs" CASE 13 LoadIMAGE 118, 330, "CHIntaks" CASE 14 LoadIMAGE 190, 320, "CHRDrvV" CASE 15 LoadIMAGE 102, 320, "CHRDrv7" CASE 16 LoadIMAGE 60, 310, "CHExBR" CASE 17 LoadIMAGE 42, 310, "CHExVs" CASE 18 LoadIMAGE 88, 320, "CHFTanks" CASE 19 LoadIMAGE 76, 330, "CHOTnksR" CASE 20 LoadIMAGE 167, 330, "CHOTnksX" CASE 21 LoadIMAGE 12, 310, "CHHBars" CASE 22 LoadIMAGE 38, 320, "CHSeats" CASE 23 LoadIMAGE 80, 324, "CHHDLts" CASE 24 SELECT CASE FenderSTYLE CASE 1: LoadIMAGE 122, 320, "CHTLLTSS" CASE 2: LoadIMAGE 122, 320, "CHTLLTSC" CASE 3: LoadIMAGE 122, 320, "CHTLLTSF" END SELECT CASE 25 LoadIMAGE 20, 300, "CHPaint" END SELECT ShowMOUSE ExPHASE = Phase END IF END SUB SUB LocateMOUSE (x, y) LB = 4 MX = x MY = y MouseDRIVER LB, 0, MX, MY END SUB SUB MenuBAR (InOUT) STATIC MenuX, Choice, Opening, BoxX SHARED FFLX, FFRX, FFTY, FFBY, RFLX, RFRX, RFTY, RFBY, TX, TY SHARED FrameX, FrameY, FenderSTYLE, HighPIPE, OT, GPaint, Frame IF BoxX <> 0 THEN GOSUB CloseBOX IF InOUT = 0 THEN GOSUB MenuDARK: EXIT SUB SELECT CASE MouseX CASE 431 TO 464 IF TopMENU <> 1 THEN GOSUB MenuDARK MenuX = 432 GOSUB MenuLIGHT TopMENU = 1 END IF CASE 513 TO 532 IF TopMENU <> 2 THEN GOSUB MenuDARK MenuX = 513 GOSUB MenuLIGHT TopMENU = 2 END IF CASE 582 TO 602 IF TopMENU <> 3 THEN GOSUB MenuDARK MenuX = 582 GOSUB MenuLIGHT TopMENU = 3 END IF CASE ELSE GOSUB MenuDARK END SELECT IF TopMENU AND LB = -1 THEN SELECT CASE TopMENU CASE 1 HideMOUSE GET (416, 46)-(563, 148), MenuBOX3() LoadFILE "CHProMNU.BSV" WAIT &H3DA, 8 PUT (416, 46), Box(), PSET BoxX = 416 ShowMOUSE MenuITEM = 1 CASE 2 HideMOUSE GET (472, 46)-(598, 100), MenuBOX3() LoadFILE "CHHlpMNU.BSV" WAIT &H3DA, 8 PUT (492, 46), Box(), PSET ShowMOUSE BoxX = 472 MenuITEM = 2 CASE 3: GOSUB MenuDARK: SYSTEM END SELECT END IF EXIT SUB MenuLIGHT: HideMOUSE GET (MenuX, 34)-(MenuX + 31, 44), MenuBOX() FOR x = MenuX TO MenuX + 31 FOR y = 34 TO 44 IF POINT(x, y) <> 1 THEN PSET (x, y), 15 NEXT y NEXT x ShowMOUSE RETURN MenuDARK: IF TopMENU THEN HideMOUSE PUT (MenuX, 34), MenuBOX(), PSET TopMENU = 0 ShowMOUSE END IF RETURN CloseBOX: IF BoxX THEN HideMOUSE PUT (BoxX, 46), MenuBOX3(), PSET ShowMOUSE BoxX = 0 END IF RETURN END SUB SUB MouseDRIVER (LB, RB, MX, MY) DEF SEG = VARSEG(MouseDATA$) Mouse = SADD(MouseDATA$) CALL ABSOLUTE(LB, RB, MX, MY, Mouse) END SUB SUB MouseSTATUS (LB, RB, MouseX, MouseY) LB = 3 MouseDRIVER LB, RB, MX, MY LB = ((RB AND 1) <> 0) RB = ((RB AND 2) <> 0) MouseX = MX MouseY = MY END SUB SUB PaintSHOP (Mode) SHARED PX, PY, Trimmed, Style SHARED FFLX, FFRX, FFTY, FFBY, RFLX, RFRX, RFTY, RFBY, TX, TY SHARED FrameX, FrameY, FenderSTYLE, HighPIPE, OT, GPaint, Frame SHARED WheelFX, WheelFY, WheelRX, WheelRY, Cover, Tank, TTY, TTTY IF Mode = 0 THEN GOSUB UnLIGHT: EXIT SUB SELECT CASE MouseX CASE 82 TO 106 SELECT CASE MouseY CASE 353 TO 364 IF PaintITEM <> 1 THEN GOSUB UnLIGHT PX = 85: PY = 356 GOSUB LIGHT PaintITEM = 1 END IF CASE 367 TO 378 IF PaintITEM <> 2 THEN GOSUB UnLIGHT PX = 85: PY = 370 GOSUB LIGHT PaintITEM = 2 END IF CASE 381 TO 392 IF PaintITEM <> 3 THEN GOSUB UnLIGHT PX = 85: PY = 384 GOSUB LIGHT PaintITEM = 3 END IF CASE 395 TO 406 IF PaintITEM <> 4 THEN GOSUB UnLIGHT PX = 85: PY = 398 GOSUB LIGHT PaintITEM = 4 END IF CASE 409 TO 420 IF PaintITEM <> 5 THEN GOSUB UnLIGHT PX = 85: PY = 412 GOSUB LIGHT PaintITEM = 5 END IF CASE ELSE GOSUB UnLIGHT END SELECT CASE 172 TO 196 SELECT CASE MouseY CASE 353 TO 364 IF PaintITEM <> 6 THEN GOSUB UnLIGHT PX = 175: PY = 356 GOSUB LIGHT PaintITEM = 6 END IF CASE 367 TO 378 IF PaintITEM <> 7 THEN GOSUB UnLIGHT PX = 175: PY = 370 GOSUB LIGHT PaintITEM = 7 END IF CASE 381 TO 392 IF PaintITEM <> 8 THEN GOSUB UnLIGHT PX = 175: PY = 384 GOSUB LIGHT PaintITEM = 8 END IF CASE 395 TO 406 IF PaintITEM <> 9 THEN GOSUB UnLIGHT PX = 175: PY = 398 GOSUB LIGHT PaintITEM = 9 END IF CASE 409 TO 420 IF PaintITEM <> 10 THEN GOSUB UnLIGHT PX = 175: PY = 412 GOSUB LIGHT PaintITEM = 10 END IF CASE ELSE GOSUB UnLIGHT END SELECT CASE 304 TO 328 SELECT CASE MouseY CASE 353 TO 364 IF PaintITEM <> 11 THEN GOSUB UnLIGHT PX = 307: PY = 356 GOSUB LIGHT PaintITEM = 11 END IF CASE 367 TO 378 IF PaintITEM <> 12 THEN GOSUB UnLIGHT PX = 307: PY = 370 GOSUB LIGHT PaintITEM = 12 END IF CASE 381 TO 392 IF PaintITEM <> 13 THEN GOSUB UnLIGHT PX = 307: PY = 384 GOSUB LIGHT PaintITEM = 13 END IF CASE 409 TO 420 IF PaintITEM <> 14 THEN GOSUB UnLIGHT PX = 307: PY = 412 GOSUB LIGHT PaintITEM = 14 END IF CASE ELSE GOSUB UnLIGHT END SELECT CASE 420 TO 444 SELECT CASE MouseY CASE 353 TO 364 IF PaintITEM <> 15 THEN GOSUB UnLIGHT PX = 423: PY = 356 GOSUB LIGHT PaintITEM = 15 END IF CASE 367 TO 378 IF PaintITEM <> 16 THEN GOSUB UnLIGHT PX = 423: PY = 370 GOSUB LIGHT PaintITEM = 16 END IF CASE 381 TO 392 IF PaintITEM <> 17 THEN GOSUB UnLIGHT PX = 423: PY = 384 GOSUB LIGHT PaintITEM = 17 END IF CASE 395 TO 406 IF PaintITEM <> 18 THEN GOSUB UnLIGHT PX = 423: PY = 398 GOSUB LIGHT PaintITEM = 18 END IF CASE 409 TO 420 IF PaintITEM <> 19 THEN GOSUB UnLIGHT PX = 423: PY = 412 GOSUB LIGHT PaintITEM = 19 END IF CASE ELSE GOSUB UnLIGHT END SELECT CASE ELSE GOSUB UnLIGHT END SELECT IF PaintITEM AND LB = -1 THEN SELECT CASE PaintITEM CASE 1 TO 10: BikeCOLOR = PaintITEM - 1: SetPALETTE CASE 11 IF Style <> 1 THEN IF Frame = 1 AND Tank = 2 THEN TTTY = -6 GOSUB NoTRIM OPEN "ff.dat" FOR INPUT AS #1 SELECT CASE FenderSTYLE CASE 1: OPEN "ffsf.dat" FOR INPUT AS #2 CASE 2: OPEN "ffcf.dat" FOR INPUT AS #2 CASE 3: OPEN "ffff.dat" FOR INPUT AS #2 END SELECT OPEN "ffw.dat" FOR OUTPUT AS #3 INPUT #1, x1, xx, y1, yy WRITE #3, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy INPUT #1, Value INPUT #2, Colr WRITE #3, POINT(x, y) IF Value = 1 AND Colr <> 0 THEN PSET (x, y), Colr NEXT y NEXT x CLOSE #1, #2, #3 OPEN "ftnkf.dti" FOR INPUT AS #1 OPEN "tnkw.dat" FOR OUTPUT AS #2 INPUT #1, x1, xx, y1, yy x1 = FrameX + x1 + TX y1 = FrameY + y1 + TY + TTTY WRITE #2, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 13 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2 IF Cover THEN OPEN "dcpb.dat" FOR INPUT AS #1 OPEN "dcw.dat" FOR OUTPUT AS #2 INPUT #1, x1, xx, y1, yy x1 = FrameX + x1 y1 = FrameY + y1 WRITE #2, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 10 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2 END IF GOSUB OilTANK OPEN "rf.dat" FOR INPUT AS #1 SELECT CASE FenderSTYLE CASE 1 IF OT = 5 THEN OPEN "rfsrfb.dat" FOR INPUT AS #2 ELSE IF GPaint = 1 OR FenderSTYLE = 1 THEN IF Frame = 1 THEN OPEN "rfsrcg.dat" FOR INPUT AS #2 ELSE OPEN "rfsxcg.dat" FOR INPUT AS #2 END IF ELSE OPEN "rfs.dat" FOR INPUT AS #2 END IF END IF CASE 2 IF OT = 5 THEN OPEN "rfcrfb.dat" FOR INPUT AS #2 ELSE IF GPaint = 1 THEN IF Frame = 1 THEN OPEN "rfcrcg.dat" FOR INPUT AS #2 ELSE OPEN "rfcxcg.dat" FOR INPUT AS #2 END IF ELSE OPEN "rfc.dat" FOR INPUT AS #2 END IF END IF CASE 3: OPEN "rff.dat" FOR INPUT AS #2 END SELECT OPEN "rfw.dat" FOR OUTPUT AS #3 INPUT #1, x1, xx, y1, yy WRITE #3, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy INPUT #1, Value INPUT #2, Colr IF POINT(x, y) = 8 OR POINT(x, y) = 12 OR POINT(x, y) = 14 THEN WRITE #3, 7 ELSE WRITE #3, POINT(x, y) END IF IF POINT(x, y) = 7 OR POINT(x, y) = 6 THEN IF Value = 1 AND Colr <> 0 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2, #3 Trimmed = 1 Style = 1 END IF CASE 12 IF Style <> 2 THEN IF Frame = 1 AND Tank = 2 THEN TTTY = -6 GOSUB NoTRIM OPEN "ftnkf2.dti" FOR INPUT AS #1 OPEN "tnkw.dat" FOR OUTPUT AS #2 INPUT #1, xx, yy x1 = FrameX + 30 + TX y1 = FrameY + 12 + TY + TTTY WRITE #2, x1, xx, y1, yy FOR x = 0 TO xx FOR y = 0 TO yy WRITE #2, POINT(x + x1, y + y1) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x + x1, y + y1) = 6 OR POINT(x + x1, y + y1) = 7 OR POINT(x + x1, y + y1) = 13 THEN PSET (x + x1, y + y1), Colr END IF NEXT y NEXT x CLOSE #1, #2 IF Cover THEN OPEN "drcvrf2.dti" FOR INPUT AS #1 OPEN "cvrw.dat" FOR OUTPUT AS #2 INPUT #1, xx, yy x1 = FrameX + 74 y1 = FrameY + 101 WRITE #2, x1, xx, y1, yy FOR x = 0 TO xx FOR y = 0 TO yy WRITE #2, POINT(x + x1, y + y1) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x + x1, y + y1) > 5 AND POINT(x + x1, y + y1) < 11 THEN PSET (x + x1, y + y1), Colr END IF NEXT y NEXT x CLOSE #1, #2 END IF Style = 2 Trimmed = 1 END IF CASE 13 IF Style <> 3 THEN GOSUB NoTRIM SELECT CASE FenderSTYLE CASE 1: OPEN "ffsp.dat" FOR INPUT AS #1 CASE 2: OPEN "ffcp.dat" FOR INPUT AS #1 CASE 3: OPEN "fffp.dat" FOR INPUT AS #1 END SELECT OPEN "ff.dat" FOR INPUT AS #2 OPEN "ffw.dat" FOR OUTPUT AS #3 INPUT #2, x1, xx, y1, yy WRITE #3, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #3, POINT(x, y) INPUT #1, Colr INPUT #2, Value IF Value = 1 THEN IF Colr <> 0 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2, #3 IF Frame = 1 THEN OPEN "dtr.dat" FOR INPUT AS #1 ELSE OPEN "dtx.dat" FOR INPUT AS #1 END IF OPEN "dtw.dat" FOR OUTPUT AS #2 INPUT #1, x1, xx, y1, yy x1 = FrameX + x1 y1 = FrameY + y1 WRITE #2, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 13 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2 SELECT CASE Tank CASE 1: OPEN "ftnktdp.dat" FOR INPUT AS #1 CASE 2: OPEN "ftnkscp.dat" FOR INPUT AS #1 CASE 3: OPEN "ftnkosp.dat" FOR INPUT AS #1 CASE 4: OPEN "ftnkcbp.dat" FOR INPUT AS #1 CASE 5: OPEN "ftnkbrp.dat" FOR INPUT AS #1 END SELECT OPEN "tnkw.dat" FOR OUTPUT AS #2 INPUT #1, x1, xx, y1, yy x1 = x1 + FrameX y1 = y1 + FrameY + TTY WRITE #2, x1, xx, y1, yy HideMOUSE FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 13 THEN PSET (x, y), Colr END IF NEXT y NEXT x ShowMOUSE CLOSE #1, #2 IF Cover THEN OPEN "dcpb.dat" FOR INPUT AS #1 OPEN "dcw.dat" FOR OUTPUT AS #2 INPUT #1, x1, xx, y1, yy x1 = FrameX + x1 y1 = FrameY + y1 WRITE #2, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 10 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2 END IF GOSUB OilTANK SELECT CASE FenderSTYLE CASE 1: OPEN "rfsp.dat" FOR INPUT AS #1 CASE 2: OPEN "rfcp.dat" FOR INPUT AS #1 CASE 3: OPEN "rffp.dat" FOR INPUT AS #1 END SELECT OPEN "rf.dat" FOR INPUT AS #2 OPEN "rfw.dat" FOR OUTPUT AS #3 INPUT #2, x1, xx, y1, yy WRITE #3, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy IF POINT(x, y) = 8 OR POINT(x, y) = 12 OR POINT(x, y) = 14 THEN WRITE #3, 7 ELSE WRITE #3, POINT(x, y) END IF INPUT #1, Colr INPUT #2, Value IF Value = 1 THEN IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 13 THEN PSET (x, y), Colr END IF END IF NEXT y NEXT x CLOSE #1, #2, #3 Style = 3 Trimmed = 1 END IF CASE 14 GOSUB NoTRIM CASE 15: FlameSTYLE = 1: SetPALETTE CASE 16: FlameSTYLE = 0: SetPALETTE CASE 17: FlameSTYLE = 2: SetPALETTE CASE 18: FlameSTYLE = 3: SetPALETTE CASE 19: FlameSTYLE = 4: SetPALETTE END SELECT END IF EXIT SUB UnLIGHT: IF PaintITEM THEN HideMOUSE PUT (PX, PY), MenuBOX(), PSET ShowMOUSE PaintITEM = 0 END IF RETURN LIGHT: HideMOUSE GET (PX, PY)-(PX + 18, PY + 5), MenuBOX() LINE (PX + 1, PY + 1)-(PX + 17, PY + 4), 15, BF ShowMOUSE RETURN NoTRIM: IF Trimmed THEN SELECT CASE Style CASE 1 HideMOUSE OPEN "ffw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 OPEN "tnkw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 IF Cover THEN OPEN "dcw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF IF OT = 1 OR OT = 3 OR OT = 5 THEN OPEN "otw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF OPEN "rfw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 ShowMOUSE CASE 2 HideMOUSE OPEN "tnkw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 IF Cover THEN OPEN "dcw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF IF OT = 1 OR OT = 3 OR OT = 5 THEN OPEN "otw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF ShowMOUSE CASE 3 HideMOUSE OPEN "ffw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 OPEN "dtw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 OPEN "tnkw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 IF Cover THEN OPEN "dcw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF IF OT = 1 OR OT = 3 OR OT = 5 THEN OPEN "otw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 END IF OPEN "rfw.dat" FOR INPUT AS #1 GOSUB FileDAT CLOSE #1 ShowMOUSE END SELECT Trimmed = 0 Style = 0 END IF RETURN OilTANK: IF OT = 1 OR OT = 3 OR OT = 5 THEN IF OT = 1 THEN OPEN "oth.dat" FOR INPUT AS #1 INPUT #1, x1, xx, y1, yy END IF IF OT = 3 THEN OPEN "otc.dat" FOR INPUT AS #1 INPUT #1, x1, xx, y1, yy END IF IF OT = 5 THEN OPEN "otbp.dat" FOR INPUT AS #1 INPUT #1, x1, xx, y1, yy END IF OPEN "otw.dat" FOR OUTPUT AS #2 x1 = FrameX + x1 y1 = FrameY + y1 WRITE #2, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy WRITE #2, POINT(x, y) INPUT #1, Colr IF Colr <> 0 THEN IF POINT(x, y) = 6 OR POINT(x, y) = 7 OR POINT(x, y) = 13 THEN PSET (x, y), Colr END IF NEXT y NEXT x CLOSE #1, #2 END IF RETURN FileDAT: INPUT #1, x1, xx, y1, yy FOR x = x1 TO x1 + xx FOR y = y1 TO y1 + yy INPUT #1, Colr PSET (x, y), Colr NEXT y NEXT x RETURN END SUB SUB PauseMOUSE (OldLB, OldRB, OldMX, OldMY) SHARED Key$ DO Key$ = UCASE$(INKEY$) MouseSTATUS LB, RB, MouseX, MouseY LOOP UNTIL LB <> OldLB OR RB <> OldRB OR MouseX <> OldMX OR MouseY <> OldMY OR Key$ <> "" END SUB SUB PrintSTRING (x, y, Prnt$) DEF SEG = VARSEG(Box(0)) BLOAD "chmssr.fbs", VARPTR(Box(0)) DEF SEG FOR i = 1 TO LEN(Prnt$) Char$ = MID$(Prnt$, i, 1) IF Char$ = " " THEN x = x + Box(1) ELSE Index = (ASC(Char$) - 33) * Box(0) + 2 PUT (x, y), Box(Index) x = x + Box(Index) END IF NEXT i END SUB SUB ProjectMENU STATIC ProITEM, ProY DO MouseSTATUS LB, RB, MouseX, MouseY SELECT CASE MouseX CASE 423 TO 552 SELECT CASE MouseY CASE 34 TO 55 GOSUB DarkPRO IF MouseX > 464 THEN GOSUB ClosePRO CASE 56 TO 71 IF ProITEM <> 1 THEN GOSUB DarkPRO ProY = 59 GOSUB LightPRO ProITEM = 1 END IF CASE 72 TO 87 IF ProITEM <> 2 THEN GOSUB DarkPRO ProY = 75 GOSUB LightPRO ProITEM = 2 END IF CASE ELSE: GOSUB ClosePRO END SELECT CASE ELSE: GOSUB ClosePRO END SELECT IF ProITEM <> 0 AND LB = -1 THEN SELECT CASE ProITEM CASE 1 Phase = 1 GOSUB ClosePRO CASE 2 GOSUB DarkPRO MenuITEM = 0 MenuBAR 0 HideMOUSE GET (178, 60)-(460, 152), Box(10000) LoadFILE "CHSaveBM.BSV" PUT (178, 60), Box(), PSET ShowMOUSE GOSUB GetNAME HideMOUSE PUT (178, 60), Box(10000), PSET ShowMOUSE IF LEN(FileNAME$) THEN FileNAME$ = LTRIM$(RTRIM$(FileNAME$)) IF INSTR(FileNAME$, " ") OR LEN(FileNAME$) > 8 THEN LongNAME = 1 LongFILENAME$ = FileNAME$ + ".BMP" FOR n = 1 TO LEN(FileNAME$) Char$ = MID$(FileNAME$, n, 1) IF Char$ <> " " THEN NewFILENAME$ = NewFILENAME$ + Char$ NEXT n FileNAME$ = RTRIM$(LEFT$(NewFILENAME$, 6)) + "~1" FileNAME$ = FileNAME$ + ".TBM" ELSE FileNAME$ = FileNAME$ + ".BMP" END IF HideMOUSE GET (90, 250)-(549, 348), Box(5000) LINE (90, 250)-(100, 310), 0, BF LINE (539, 250)-(549, 310), 0, BF LINE (90, 285)-(549, 310), 0, BF LINE (95, 55)-(544, 305), 3, B LINE (115, 310)-(524, 348), 0, BF LoadFILE "CHGenBMP.BSV" PUT (90, 310), Box(), PSET FourBIT 90, 50, 549, 310, FileNAME$ LINE (95, 55)-(544, 305), 0, B PUT (90, 250), Box(5000), PSET ShowMOUSE IF LongNAME = 1 THEN SHELL "REN " + FileNAME$ + " TMP.TBM" SHELL "REN TMP.TBM " + CHR$(34) + LongFILENAME$ + CHR$(34) LongNAME = 0 END IF END IF EXIT SUB END SELECT END IF LOOP EXIT SUB LightPRO: HideMOUSE GET (430, ProY)-(560, ProY + 10), MenuBOX2() FOR x = 430 TO 560 FOR y = ProY TO ProY + 10 IF POINT(x, y) = 3 THEN PSET (x, y), 15 NEXT y NEXT x ShowMOUSE RETURN DarkPRO: IF ProITEM THEN HideMOUSE PUT (430, ProY), MenuBOX2(), PSET ShowMOUSE ProITEM = 0 END IF RETURN ClosePRO: GOSUB DarkPRO MenuITEM = 0 MenuBAR 0 EXIT SUB RETURN GetNAME: CheckCHAR$ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz " n$ = "": ky$ = "": PrintX = 242: CharNUM = 1 DO MouseSTATUS LB, RB, MouseX, MouseY ky$ = INKEY$ LINE (PrintX + 2, 118)-(PrintX + 2, 128), 5 IF LEN(ky$) THEN SELECT CASE ASC(ky$) CASE 8 IF LEN(n$) > 0 THEN HideMOUSE CharNUM = CharNUM - 1 LINE (FChar(CharNUM), 118)-(PrintX + 2, 129), 15, BF PrintX = FChar(CharNUM) n$ = MID$(n$, 1, LEN(n$) - 1) LINE (PrintX + 2, 118)-(PrintX + 2, 128), 5 ShowMOUSE END IF CASE 13 FileNAME$ = n$ n$ = "" ky$ = "" RETURN CASE ELSE IF INSTR(CheckCHAR$, ky$) THEN IF PrintX < 390 THEN FChar(CharNUM) = PrintX CharNUM = CharNUM + 1 HideMOUSE LINE (PrintX + 2, 118)-(PrintX + 2, 128), 15 PrintSTRING PrintX, 118, ky$ LINE (PrintX + 2, 118)-(PrintX + 2, 128), 5 ShowMOUSE n$ = n$ + ky$ END IF END IF END SELECT END IF LOOP RETURN END SUB FUNCTION Seeker (x, y, Mode) SELECT CASE Mode CASE 0 'left side FOR xx = x TO x + 140 FOR yy = y TO y + 100 IF POINT(xx, yy) = 6 OR POINT(xx, yy) = 7 THEN Seeker = xx: EXIT FUNCTION NEXT yy NEXT xx CASE 1 'right side FOR xx = x + 140 TO x STEP -1 FOR yy = y TO y + 100 IF POINT(xx, yy) = 6 OR POINT(xx, yy) = 7 THEN Seeker = xx: EXIT FUNCTION NEXT yy NEXT xx CASE 2 'top FOR yy = y TO y + 100 FOR xx = x TO x + 140 IF POINT(xx, yy) = 6 OR POINT(xx, yy) = 7 THEN Seeker = yy: EXIT FUNCTION NEXT xx NEXT yy CASE 3 'bottom FOR yy = y + 100 TO y STEP -1 FOR xx = x TO x + 140 IF POINT(xx, yy) = 6 OR POINT(xx, yy) = 7 THEN Seeker = yy: EXIT FUNCTION NEXT xx NEXT yy END SELECT END FUNCTION SUB SetPALETTE RESTORE PaletteDATA OUT &H3C8, 0 FOR n = 1 TO 18 READ Colr OUT &H3C9, Colr NEXT n RESTORE CustomCOLORS REDIM Colors(6) FOR n = 0 TO 6 READ Colors(n) NEXT n CColor = 0 FOR n = 0 TO 6 OUT &H3C8, Colors(n) FOR i = 1 TO 3 OUT &H3C9, CustomCOLORS(BikeCOLOR, CColor) CColor = CColor + 1 NEXT i NEXT n IF FlameSTYLE THEN SELECT CASE FlameSTYLE CASE 1: RESTORE FlameCOLOR CASE 2: RESTORE SilverCOLOR CASE 3: RESTORE GoldCOLOR CASE 4: RESTORE WhiteCOLOR END SELECT OUT &H3C8, 8 FOR i = 1 TO 3 READ Colr: OUT &H3C9, Colr NEXT i OUT &H3C8, 12 FOR i = 1 TO 3 READ Colr: OUT &H3C9, Colr NEXT i OUT &H3C8, 14 FOR i = 1 TO 3 READ Colr: OUT &H3C9, Colr NEXT i END IF OUT &H3C8, 9: OUT &H3C9, 21: OUT &H3C9, 21: OUT &H3C9, 63 OUT &H3C8, 11: OUT &H3C9, 63: OUT &H3C9, 0: OUT &H3C9, 0 END SUB SUB ShowMOUSE LB = 1 MouseDRIVER LB, 0, 0, 0 END SUB SUB Tire (x, y, Outer, Inner) CIRCLE (x, y), Outer, 2 CIRCLE STEP(0, 0), Inner, 2 PaintSPOT = Outer - 4 PAINT (x, y - PaintSPOT), 1, 2 CIRCLE (x, y), Outer, 1 CIRCLE (x, y), Outer - 1, 2, 30 * Degree!, 210 * Degree! CIRCLE (x, y), Outer - 3, 2, 30 * Degree!, 210 * Degree! Tread x, y, Outer - 1, 120, 300, 5 Tread x, y, Outer - 3, 120, 300, 5 Tread x, y, Outer - 1, 300, 475, 2 Tread x, y, Outer - 3, 300, 475, 2 IF Outer - Inner > 14 THEN CIRCLE (x, y), Outer - 6, 2, 30 * Degree!, 210 * Degree! Tread x, y, Outer - 6, 120, 300, 5 Tread x, y, Outer - 6, 300, 475, 2 END IF END SUB SUB Tread (x, y, Radius, StartDEG, StopDEG, Colr) FOR n = StartDEG TO StopDEG STEP 5 Adj = Radius * SIN(n * Degree!) Opp = Radius * COS(n * Degree!) PSET (x + Adj, y + Opp), Colr NEXT n END SUB