Jump to content

akirmse

New Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by akirmse

  1. Nice, that worked!  Code is below.  I think in the commercial version, someone rewrote the drawing code in assembler, because it was too slow in BASIC.  I guess I was 14 when I wrote this.

     

    Check out my sweet call-out to the Houston BBS, now at 1200 baud!

     

    10 !TI-RUNNER EDITOR
    15 !COPYRIGHT (C) 1987 BY
    20 !ANDREW KIRMSE
    22 !
    24 ! CALL HUG TIBBS              (713) 475-8909             24 HRS&1200 BAUD
    26 !
    30 CALL INIT :: CALL LOAD(-31806,16)
    50 DATA 104,110,96,120,106,112,113,114,105
    70 PO$="1234"
    90 RESTORE 50 :: FOR I=1 TO 9 :: READ P(I) :: NEXT I
    100 CALL CHAR(136,"1C3E1C183C7DBA78",137,"38382C26C203") :: CALL COLOR(14,16,1)
    101 A$="000000" :: CALL CHAR(91,"003E414D514D413E",92,A$&"3A2B3A2A2A",93,A$&"5955D55559",94,A$&"DD5199515C",95,A$&"11115151A1")
    102 CALL MAGNIFY(1) :: CALL CHAR(138,"387C38183CBE5D1E1C1C346443C")
    104 CALL CHAR(64,A$&"5755965555",36,A$&"456D554445",37,A$&"B820B0A0B8",38,A$&"4ECA4E42E2",34,A$&"EEA2E4A8E8")
    105 CALL CLEAR :: DISPLAY AT(1,5):". TI-RUNNER EDITOR .":"    .    [\]^_@$%&""    .": : :"PRESS:": : :"1) TO ADD A SCREEN"
    107 DISPLAY AT(5,1):"PRESS:": : :"1) TO ADD A SCREEN": : :"2) TO EDIT A SCREEN": : :"3) TO EXIT"
    110 IF PO$="1234" THEN DISPLAY AT(17,1):"4) FOR INSTRUCTIONS"
    112 DISPLAY AT(24,1):"YOUR CHOICE?2"
    115 ACCEPT AT(24,13) SIZE(-1) BEEP VALIDATE (PO$):CHOICE
    117 PO$="123"
    120 ON CHOICE GOTO 140,600,125,2000
    125 CALL CLEAR :: END
    130 !MAKE A SCREEN
    140 LADCOL$="5" :: LADCOL2$="0" :: TRECOL$="5" :: TRECOL2$="0" :: TRE=3 :: GOSUB 1200 !GET COLORS
    145 FOR I=1 TO 4 :: R(I)=19 :: C(I)=96 :: NEXT I
    170 CALL CLEAR :: OPEN #1:"DSK1..LEVEL28",RELATIVE,DISPLAY,FIXED 28
    180 OPEN #2:"DSK1..SCREENS" :: INPUT #2:SCREEN :: CLOSE #2 :: OPEN #2:"DSK1..SCREENS" :: CALL CLEAR :: GOSUB 1100
    217 DISPLAY AT(24,11):"1h2n3`4x5j6p7q8r9i" :: HOR=1 !HORIZ ON
    220 RO=1 :: CO=3 :: DISPLAY AT(24,1) SIZE(10):"SCREEN";SCREEN+1
    225 CALL CHAR(128,"183C5A18185A3C18",129,"002442FFFF4224")
    230 CALL SPRITE(#1,128+HOR,8,RO*8-7,CO*8-7)
    240 CALL KEY(3,K,S) :: IF S<>0 THEN 270
    250 CALL JOYST(1,X,Y) :: X=SGN(X) :: Y=-SGN(Y)
    255 IF RO+Y>23 THEN RO=1 ELSE IF RO+Y<1 THEN RO=23 ELSE IF CO+X>30 THEN CO=3 ELSE IF CO+X<3 THEN CO=30 ELSE RO=RO+Y :: CO=CO+X
    260 GOTO 230
    270 IF K=15 THEN 380 ELSE IF K=13 THEN 350 ELSE IF K=90 THEN IF HOR=1 THEN HOR=0 :: GOTO 230 ELSE HOR=1 :: GOTO 230
    275 IF K>48 AND K<58 THEN CALL HCHAR(RO,CO,P(K-48)) :: GOSUB 1000 :: GOTO 240 ELSE CALL HCHAR(RO,CO,K) :: GOSUB 1000 :: GOTO 240
    350 GOSUB 1450 :: DISPLAY AT(24,10):"    SAVING" :: RECO=SCREEN*24 :: PRINT #1,REC RECO:FIRST$
    360 FOR I=1 TO 23 :: A$="" :: FOR J=3 TO 30 :: CALL GCHAR(I,J,CH) :: A$=A$&CHR$(CH) :: NEXT J :: PRINT #1,REC RECO+I:A$ :: NEXT I
    370 PRINT #2:SCREEN+1
    380 CLOSE #1 :: CLOSE #2 :: CALL DELSPRITE(ALL) :: CALL CHARSET :: CALL SCREEN(8) :: GOTO 100
    600 DISPLAY AT(12,1) ERASE ALL :"WHAT SCREEN TO EDIT?1" :: ACCEPT AT(12,21) SIZE(-2) BEEP VALIDATE (DIGIT):SCREEN
    605 IF SCREEN=0 THEN 100
    610 CALL CLEAR :: OPEN #1:"DSK1..LEVEL28",DISPLAY,RELATIVE,FIXED 28
    615 OPEN #2:"DSK1..SCREENS"
    620 INPUT #2:NUMSCREEN :: IF SCREEN>NUMSCREEN THEN CLOSE #1 :: CLOSE #2 :: GOTO 600
    622 INPUT "CHANGE COLORS?":Q$ :: INPUT #1,REC(SCREEN-1)*24:FIRST$ :: IF Q$="N" OR Q$="n" THEN 626
    623 LADCOL$=SEG$(FIRST$,17,1) :: LADCOL2$=SEG$(FIRST$,18,1) :: TRECOL$=SEG$(FIRST$,19,1) :: TRECOL2$=SEG$(FIRST$,20,1)
    624 TRE=ASC(SEG$(FIRST$,22,1))-48 :: GOSUB 1200 !GET COLORS
    625 GOTO 630
    626 NUMTRE$=SEG$(FIRST$,22,1)
    628 LADCOL$=SEG$(FIRST$,17,1) :: LADCOL=ASC(LADCOL$)-47 :: LADCOL2$=SEG$(FIRST$,18,1) :: LADCOL2=ASC(LADCOL2$)-47
    629 TRECOL$=SEG$(FIRST$,19,1) :: TRECOL=ASC(TRECOL$)-47 :: TRECOL2$=SEG$(FIRST$,20,1) :: TRECOL2=ASC(TRECOL2$)-47
    630 INPUT "CHANGE SCREEN?":Q$ :: Z$=Q$ :: IF Q$="N" OR Q$="n" THEN GOSUB 1400 :: SCREEN=SCREEN-1 :: GOTO 710
    635 CALL MAGNIFY(1) :: FOR I=1 TO 23 :: LINPUT #1,REC(SCREEN-1)*24+I:A$ :: PRINT A$
    640 NEXT I :: SCREEN=SCREEN-1 :: GOSUB 1100
    655 HOR=1 :: RO=1 :: CO=3 :: DISPLAY AT(24,1):"SCREEN";SCREEN+1;"1h2n3`4x5j6p7q8r9i"
    670 CALL CHAR(128,"183C5A18185A3C18",129,"002442FFFF4224")
    672 CALL SPRITE(#1,128+HOR,8,RO*8-7,CO*8-7)
    675 CALL KEY(3,K,S) :: IF S<>0 THEN 690 ELSE CALL JOYST(1,X,Y) :: X=SGN(X) :: Y=-SGN(Y)
    680 IF RO+Y>23 THEN RO=1 ELSE IF RO+Y<1 THEN RO=23 ELSE IF CO+X>30 THEN CO=3 ELSE IF CO+X<3 THEN CO=30 ELSE RO=RO+Y :: CO=CO+X
    685 GOTO 672
    690 IF K=15 THEN 730 ELSE IF K=13 THEN 707 ELSE IF K=90 THEN IF HOR=1 THEN HOR=0 :: GOTO 672 ELSE HOR=1 :: GOTO 672
    700 IF K>48 AND K<58 THEN CALL HCHAR(RO,CO,P(K-48)) :: GOSUB 1000 :: GOTO 675 ELSE CALL HCHAR(RO,CO,K) :: GOSUB 1000 :: GOTO 675
    707 DISPLAY AT(24,10):" CHANGE MEN?N" :: ACCEPT AT(24,22) SIZE(-1) BEEP VALIDATE ("YNyn"):Q$ :: GOSUB 1400
    708 DISPLAY AT(24,10):"    SAVING"
    710 RECO=SCREEN*24 :: PRINT #1,REC RECO:FIRST$ :: IF Z$="N" OR Z$="n" THEN 730
    715 FOR I=1 TO 23 :: A$="" :: FOR J=3 TO 30 :: CALL GCHAR(I,J,CH) :: A$=A$&CHR$(CH) :: NEXT J :: PRINT #1,REC RECO+I:A$ :: NEXT I
    730 CLOSE #1 :: CLOSE #2 :: CALL DELSPRITE(ALL) :: CALL CHARSET :: CALL SCREEN(8) :: GOTO 100
    999 !MOVING SUBROUTINE
    1000 IF HOR=1 THEN IF CO=30 THEN CO=3 :: IF RO=23 THEN RO=1 ELSE RO=RO+1 ELSE CO=CO+1
    1010 IF HOR=0 THEN IF RO=23 THEN RO=1 :: IF CO=30 THEN CO=3 ELSE CO=CO+1 ELSE RO=RO+1
    1020 RETURN
    1099 !CHAR DEFS
    1100 CALL CHAR(96,"8181FF818181FF81",104,"FF101010FF010101",105,"FF",120,"407F410101417F4")
    1110 CALL CHAR(113,"007EFF919191FF",106,"FF007E18181800FF",114,"003C5AA55A2418",110,"FF925592FF295529",112,"000002FD52")
    1115 CALL CHAR(40,"1C3E1C183C7DBA7838382C26C203000000000000000000000")
    1120 CALL COLOR(9,LADCOL,LADCOL2,10,7,1,11,TRECOL,TRECOL2,12,11,1,13,8,1)
    1130 CALL SCREEN(2)
    1140 FOR I=2 TO 8 :: CALL COLOR(I,16,1) :: NEXT I
    1150 RETURN
    1199 !INPUT COLOR ROUTINE
    1200 DISPLAY AT(1,7) ERASE ALL :"CHOOSE LADDER COLOR" :: DISPLAY AT(24,13):"COLOR?";LADCOL$
    1205 CALL CHAR(136,RPT$("F",16))
    1210 RESTORE 1220 :: FOR I=1 TO 16 :: READ A$,B$ :: DISPLAY AT(I+4,10):A$;" ";B$ :: CALL SPRITE(#I,136,I,26+I*8,97) :: NEXT I
    1215 ACCEPT AT(24,19) SIZE(-1) BEEP VALIDATE (DIGIT,":;<=>?"):LADCOL$ :: LADCOL=ASC(LADCOL$)-47
    1220 DATA 0,TRANSPARENT,1,BLACK,2,MEDIUM GREEN,3,LIGHT GREEN,4,DARK BLUE,5,LIGHT BLUE,6,DARK RED
    1225 DATA 7,CYAN,8,MEDIUM RED,9,LIGHT RED,:,DARK YELLOW,;,LIGHT YELLOW,<,DARK GREEN,=,MAGENTA
    1230 DATA >,GRAY,?,WHITE
    1240 DISPLAY AT(1,4):"BACKROUND LADDER COLOR" :: DISPLAY AT(24,13):"COLOR?";LADCOL2$
    1245 ACCEPT AT(24,19) SIZE(-1) BEEP VALIDATE (DIGIT,":;<=>?"):LADCOL2$ :: LADCOL2=ASC(LADCOL2$)-47
    1249 !TREASURE COLOR
    1250 DISPLAY AT(1,1):"     CHOOSE TREASURE COLOR" :: DISPLAY AT(24,13):"COLOR?";TRECOL$
    1270 ACCEPT AT(24,19) SIZE(-1) BEEP VALIDATE (DIGIT,":;<=>?"):TRECOL$ :: TRECOL=ASC(TRECOL$)-47
    1280 DISPLAY AT(1,3):"BACKROUND TREASURE COLOR" :: DISPLAY AT(24,13):"COLOR?";TRECOL2$
    1290 ACCEPT AT(24,19) SIZE(-1) BEEP VALIDATE (DIGIT,":;<=>?"):TRECOL2$ :: TRECOL2=ASC(TRECOL2$)-47
    1295 CALL DELSPRITE(ALL)
    1299 !# OF TREASURES
    1300 DISPLAY AT(12,1) ERASE ALL :"HOW MANY TREASURES(0-15):";STR$(TRE) :: ACCEPT AT(12,26) SIZE(-2) BEEP VALIDATE (DIGIT):A :: NUMTRE$=CHR$(48+A)
    1305 IF A>15 THEN 1300
    1310 RETURN
    1399 !GET POSITIONS&FIRST$
    1400 IF Q$="N" OR Q$="n" THEN FIRST$=SEG$(FIRST$,1,16) :: GOTO 1600
    1405 FOR I=1 TO 4 :: IF SEG$(FIRST$,(I-1)*4+1,2)="??" THEN R(I)=1 :: GOTO 1410
    1407 R(I)=((ASC(SEG$(FIRST$,(I-1)*4+1,1))-48)*16+ASC(SEG$(FIRST$,(I-1)*4+2,1))-47)+3
    1410 C(I)=(ASC(SEG$(FIRST$,(I-1)*4+3,1))-47)*16+ASC(SEG$(FIRST$,I*4,1))-64 :: NEXT I
    1440 DATA PLAYER,16,PURPLE,14,YELLOW,11,GREEN,4
    1450 CALL MAGNIFY(3) :: RESTORE 1440 :: FOR I=1 TO 4 :: READ A$,A :: DISPLAY AT(24,10):"    PLACE ";A$
    1460 CALL SPRITE(#I,40,A,R(I),C(I))
    1465 CALL KEY(1,K,S) :: IF S<>0 THEN 1500
    1470 CALL JOYST(1,X,Y) :: X=SGN(X) :: Y=-SGN(Y)
    1480 IF R(I)+Y<1 OR R(I)+Y>171 OR C(I)+X<16 OR C(I)+X>233 THEN 1465 ELSE R(I)=R(I)+Y :: C(I)=C(I)+X :: GOTO 1460
    1500 IF K=18 THEN 1550
    1505 IF R(I)>163 AND K=0 THEN 1470 ELSE IF R(I)<9 AND K=5 THEN 1470 ELSE IF C(I)>225 AND K=3 THEN 1470 ELSE IF C(I)<24 AND K=2 THEN 1470
    1530 IF K=0 THEN R(I)=R(I)+8 ELSE IF K=5 THEN R(I)=R(I)-8 ELSE IF K=2 THEN C(I)=C(I)-8 ELSE IF K=3 THEN C(I)=C(I)+8 ELSE 1470
    1540 GOTO 1460
    1550 NEXT I
    1560 FIRST$="" :: FOR I=1 TO 4 :: R(I)=R(I)-4
    1565 IF R(I)<5 THEN FIRST$=FIRST$&"??" :: GOTO 1580
    1570 FIRST$=FIRST$&CHR$(48+INT(R(I)/16))&CHR$(48+R(I)-(INT(R(I)/16)*16))
    1580 FIRST$=FIRST$&CHR$(49+INT((C(I)-16)/16))&CHR$(48+C(I)-16-(INT((C(I)-16)/16)*16))
    1590 NEXT I
    1600 FIRST$=FIRST$&LADCOL$&LADCOL2$&TRECOL$&TRECOL2$&"0"&NUMTRE$ :: RETURN
    1900 DISPLAY AT(24,1):"*PRESS ANY KEY TO CONTINUE*"
    1910 CALL KEY(3,K,S) :: IF S=0 THEN 1910 ELSE RETURN
    1998 !@P-
    1999 !INSTRUCTIONS
    2000 CALL CLEAR :: PRINT "YES! Now you can make your  own TI-RUNNER screens!  But it's a little tougher than  it looks, so here's some"
    2010 PRINT "help to get you started:": :"There are 4 options on the  main menu..  Let's take them one at a time to make it"
    2020 PRINT "easy..  First is ADD A SCREENwhere you actually type in ascreen.."
    2030 PRINT "  After typing 1 at the     menu, you must choose the   foreground and backround    colors for the ladders and"
    2040 PRINT "treasures..  These are just  decorations to add a little interest to the screen.. The colors will appear when you"
    2050 PRINT "play the game, so try to    make them look nice..": : :: GOSUB 1900
    2060 PRINT "For something really diff-  erent, try making the       ladders transparent with a  colored backround.."
    2070 PRINT "  Now you have to enter the number of treasures on your screen..  If you aren't sure,just type ENTER and go back"
    2080 PRINT "and edit it later..  One noteon this: The number you typein is the # of treasures youneed to win the screen.."
    2090 PRINT "So, you can type in 5       treasures, but have 6 on thescreen and fool the player  into going for impossible"
    2100 PRINT "treasures (nasty, but fun)..   Finally you get to enter  your screen..  Type the      number (on the bottom row)"
    2110 PRINT "that corresponds to the     object you want to appear..": : :: GOSUB 1900
    2120 PRINT : :"  You may type words on the screen if you wish..  To movearound, use Joystick #1 and make sure Alpha Lock is up.."
    2130 PRINT "  One option you have at    this point is pressing Z..   Doing that will change your cursor from 'right-left' to"
    2140 PRINT "'up-down' mode and vice     versa..  The arrow points theway in which the cursor     moves after you type some-"
    2150 PRINT "thing..  'Up-down' is useful for typing in ladders very  quickly.."
    2155 PRINT "  To abort here in ADD or   EDIT, press <FCTN 9>.."
    2160 PRINT : :"  Press Enter when you are  done with the screen..": : :: GOSUB 1900
    2170 PRINT "The last thing to do is to  place the 'men'..  First you place the player and then   the purple, yellow and green"
    2180 PRINT "'bad guys'..  For fast move- ment around the screen, use the arrow keys..  Use the    joystick for bit-by-bit"
    2190 PRINT "maneuvering..  WARNING: You  obviously don't want to put the player in solid rock or he will die immediately.."
    2200 PRINT "You must be VERY careful    when placing the bad guys..  If you move them with the   joystick, they may act"
    2210 PRINT "strangely when the game is  played..  I suggest just     using the arrow keys to     place them..": : : :: GOSUB 1900
    2220 PRINT "Press the joystick button   after placing each man..":"  Use the EDIT option to    alter a screen you have al-"
    2230 PRINT "ready created..  You may     choose to change the colors or not..  If you only want tochange the colors, type N at"
    2240 PRINT "the CHANGE SCREEN prompt..   If you change the screen,   use the same procedure as inADD A SCREEN..  After typing"
    2250 PRINT "in your changes you can     change the position of the  men or not.. Again, if you   do, do it the same way as"
    2260 PRINT "before..  Editing is great   for fixing your  screen if  you find some mistakes afterplaying the game..  Note: If"
    2270 PRINT "you change a man's position,it starts in its old place  as a default.."
    2280 GOSUB 1900
    2290 PRINT "  The other two options are quit and instructions, whichare self-explanatory.."
    2350 PRINT : :"  One last thing: use the 9 in ADD or EDIT under all    blocks as decoration; they  add a nice touch.."
    2355 PRINT "  BE SURE to use a separate disk for your screens so youdon't erase the screens you bought.."
    2360 PRINT : :"  So have fun making your   own TI-RUNNER screens and   tell us about your best..": : : : : :
    2380 GOSUB 1900 :: GOTO 100
    2400 !@P+

     

    • Like 4
    • Thanks 1
×
×
  • Create New...