+Ksarul Posted March 9, 2020 Share Posted March 9, 2020 You could probably try and look inside the image with TIImagetool and see if it will let you look at the source file. Alternatively, you could put the source file in an image by itself and post that image here. Quote Link to comment Share on other sites More sharing options...
akirmse Posted March 9, 2020 Share Posted March 9, 2020 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+ 4 1 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted March 9, 2020 Share Posted March 9, 2020 wow.very nice! 1 Quote Link to comment Share on other sites More sharing options...
webdeck Posted November 13, 2020 Share Posted November 13, 2020 My LEVEL28 file also appears to be corrupted. Has anyone found a good copy? Quote Link to comment Share on other sites More sharing options...
akirmse Posted November 13, 2020 Share Posted November 13, 2020 Here are the original DSK files from the retail product; can you use these? tirun1.DSK tirun2.DSK 2 Quote Link to comment Share on other sites More sharing options...
webdeck Posted November 14, 2020 Share Posted November 14, 2020 Thanks - I will give that a try! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.