jchase1970
Members-
Posts
356 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Community Map
Everything posted by jchase1970
-
Out the cube? What does that mean? Can you provide a screenshot? Or do you mean, you push a cube into a portal where it falls into a portal, then comes back up and falls down again? Adamantyr out? where did that come from? Yeah dropped the cube in a portal and then fell in the portal with the man and unbreakable loop started
-
I can't repeat the cube in the wall now that I am home and am using a joystick, portal fix is much better until you out the cube in the portal and then fall into it yourself, wasn't trying to do that but it happened in level 5 when I went to test the portal fix. Again not such a bad problem if you could hit R and reload the level but it overrides that.
-
Here's my version of it, I calculate the new char each refresh and erase the 4 characters around the dot char for when it moves a character spot over. I didn't do any bounds checking or it would only erase the characters around it when it moved to a new character spot. 5 DIM C$( 10 c$(1)="80"::c$(2)="40"::c$(3)="20"::c$(4)="10"::c$(5)="08"::c$(6)="04"::c$(7)="02"::c$(="01" 20 X=100::Y=100 30 SX=INT(X/8)::SY=INT(Y/8) 32 PX=X-SX*8+1::PY=Y-SY*8+1 40 CH$=RPT$("00",PY-1)&C$(PX) 45 CALL CHAR(33,CH$) 50 CALL HCHAR(SY,SX,33,1) 51 CALL HCHAR(SY-1,SX-1,32,3) 52 CALL HCHAR(SY,SX-1,32,1) 53 CALL HCHAR(SY,SX+1,32,1) 54 CALL HCHAR(SY+1,SX-1,32,3) 60 CALL JOYST(1,JX,JY) 70 X=X+(JX/4)::Y=Y-(JY/4) 80 GOTO 30 works pretty good in over drive.
-
I posted some code for moving a dot around in basic on the special effects thread let me see if I can find it and compare.
-
100 DIM MAZE(28,32) 110 RANDOMIZE 120 CALL SCREEN(7) 130 CALL CLEAR rem size of room 140 SIZEX=INT(RND*5)+4 150 SIZEY=INT(RND*5)+4 rem location of room 160 RX=INT(RND*+1 170 RY=INT(RND*10)+1 rem for next loops to draw room into array rem for next for room starts at room location and goes to room location +size 180 FOR Q=rx TO rx+SIZEY 190 FOR A=ry TO ry+SIZEX rem change each tile in this loop to 1 in the array 210 MAZE(a,q)=1 220 NEXT A 250 NEXT Q rem array is made now with room so lets draw it 260 for x=1 to 32 270 for y=1 to 28 275 if maze(y,x)=1 then CALL HCHAR(Y,x,35) 280 next y 290 NEXT x 310 GOTO 130 each time this does line 310 and gotos 130 it erase the screen not the array and adds another room to the array. if you want the array to be clear you have to clear the array and you can do it by adding a line in the draw array loop to erase the point in the array after you draw the point on the screen like this, 275 if maze(y,x)=1 then CALL HCHAR(Y,x,35)::maze(y,x)=0 notice line 210 stores a point in the array 210 MAZE(a,q)=1 see it change a 0 to a 1 a better way to do all of this is like this, but I wanted you to see it more clearly first. This code will draw the ascii code to the array and then draw from the array to the screen and erase the array at the same time. rem a new array all set to 0's 100 DIM MAZE(28,32) 110 RANDOMIZE 120 CALL SCREEN(7) 130 CALL CLEAR rem size of room 140 SIZEX=INT(RND*5)+4 150 SIZEY=INT(RND*5)+4 rem location of room 160 RX=INT(RND*+1 170 RY=INT(RND*10)+1 rem for next loops to draw room into array rem for next for room starts at room location and goes to room location +size 180 FOR Q=rx TO rx+SIZEY 190 FOR A=ry TO ry+SIZEX rem change each tile in this loop to 35 in the array 210 MAZE(a,q)=35 220 NEXT A 250 NEXT Q rem array is made now with room so lets draw it 260 for x=1 to 32 270 for y=1 to 28 275 if maze(y,x)>0 then CALL HCHAR(Y,x,maze(y,x)) :: maze(y,x)=0 280 next y 290 NEXT x 310 GOTO 130 no notice line 275 that draws the array. it will draw what ever character is in the array if it's not zero. so like this you can include more then one character and not use a bunch of if thens for each character code used. to drive that home change this line, 210 MAZE(a,q)=int(rnd*60)+35
-
New technology doesn't mean better, I don't think I every double posted on my TI.
-
Well the block in the wall only happened when the door was there. I tried to do it next to a wall. So that is not real important. The portal lock is bad. Cause u have to break the program and restart. Speaking of restart are you going to have a level skip or password to another level. Be nice if when I play again and I'm on level 7 or whatever that I don't have to play from the beginning.
-
This pic show both problems, 1) push block to wall 2) lift block 3) press hold left 4) press up next Two down portals jump in one completely overrides all key input. Can't hold left right to get off, can't press R for redo level. have to break to get out.
-
On vacation, can't work on my game for a few days, I DL this and let my son play who has beat Portal and he liked this game. a couple of things we noticed that may be fixed. I think the first was mentioned, 2 portals on the ground walk into one and a endless loop starts that you can'r ® out of have to F4 it. Then on level 4 got the box top of the do even though it's a wall spot. Going to play it some more! Really enjoy it!
-
check out the TI99programming forum in the programming section. We have a basic programming contest going right now with some great games coming from it.
-
Here is his HCHAR routines HCHAR BL @HCHGAD HCHAR4 BL @VSBW Note use of BL, not BLWP HCHAR3 DEC R6 JEQ HCHAR1 INC R0 CI R0,>4300 JL HCHAR2 CLR R0 JMP HCHAR4 HCHAR2 MOVB R1,@>8C00 JMP HCHAR3 HCHAR1 B @RTN VSBW ORI R0,>4000 WRITE OPERATION SWPB R0 MOVB R0,@>8C02 SWPB R0 MOVB R0,@>8C02 MOVB R1,@>8C00 B *R11 HCHGAD MOV R11,R10 BL @GET3 MOV *R4,R0 ROW to R0 MOV *R5,R2 COL to R2 MOV *R6,R1 ASCII to R1 C *R13,R15 See if next word is a number or an instruction JLT HCHARX optional number included LI R6,1 JMP HCHARY HCHARX BL @GET1 MOV *R6,R6 HCHARY DEC R0 DEC R2 SLA R0,5 A R2,R0 SWPB R1 AI R1,>6000 B *R10 The only thing I wish I had was he phraser where he breaks down the basic code, but I'm about there on that too.
-
Well it's in assembly but not assembly you would program and not efficient if you programmed it yourself. The compiler has a sub for say CALL HCHAR and every time the basic program uses CALL HCHAR the assembly in branches to that sub with what it needs (y,x,c) pass into registers DEF RUN,CON RUNEA B @RUNEA5 FRSTLN L100 L110 L120 DATA CLEAR L130 DATA COLOR,NC1,NC2,NC3 L140 DATA COLOR,NC4,NC3,NC5 L150 DATA LET,NV1,NC6 L160 DATA LET,NV2,NC7 L170 DATA CHAR,NC8,SC1 L180 DATA CHAR,NC9,SC1 L190 DATA CHAR,NC10,SC2 L200 DATA CHAR,NC11,SC3 L210 DATA CHAR,NC12,SC4 L220 DATA HCHAR,NC3,NC13,NC8,NC14 L230 FOR1 DATA FOR,NV3,NC3,NC15,ONE,0,0 L240 FOR2 DATA FOR,NV4,NC16,NC17,ONE,0,0 L250 DATA MLTPLY,RND,NC18,NT1 DATA INT,NT1,NT2 DATA CLT,NT2,NV1,NT3 DATA IF,NT3,L260,L270 L260 DATA HCHAR,NV4,NV3,NC9 L270 DATA NEXT,FOR2+2 L280 DATA NEXT,FOR1+2 L290 FOR3 DATA FOR,NV3,NC3,NC15,ONE,0,0 L300 FOR4 DATA FOR,NV4,NC16,NC17,ONE,0,0 L310 DATA LET,NV5,NC19 L320 DATA MINUS,NC13,NT1 FOR5 DATA FOR,NV6,NT1,NC13,ONE,0,0 L330 DATA ADD,NV4,NV6,NT1 DATA GCHAR,NT1,NV3,NV7 L340 DATA CEQ,NV7,NC9,NT1 DATA IF,NT1,L350,L360 L350 DATA ADD,NV5,NC13,NT1 DATA LET,NV5,NT1 L360 DATA ADD,NV3,NV6,NT1 DATA GCHAR,NV4,NT1,NV7 L370 DATA CEQ,NV7,NC9,NT1 DATA IF,NT1,L380,L390 L380 DATA ADD,NV5,NC13,NT1 DATA LET,NV5,NT1 L390 DATA SBTRCT,NV2,NC13,NT1 DATA CGT,NV5,NT1,NT2 DATA IF,NT2,L400,L420 L400 DATA HCHAR,NV4,NV3,NC9 L410 DATA GOTO,L430 L420 DATA NEXT,FOR5+2 L430 DATA NEXT,FOR4+2 L440 DATA NEXT,FOR3+2 L450 DATA LET,NV5,NC19 L460 DATA MLTPLY,RND,NC20,NT1 DATA INT,NT1,NT2 DATA ADD,NT2,NC3,NT3 DATA LET,NV3,NT3 L470 DATA MLTPLY,RND,NC21,NT1 DATA INT,NT1,NT2 DATA ADD,NT2,NC3,NT3 DATA LET,NV4,NT3 L480 DATA MINUS,NC13,NT1 FOR6 DATA FOR,NV6,NT1,NC13,ONE,0,0 L490 DATA ADD,NV4,NV6,NT1 DATA GCHAR,NT1,NV3,NV7 L500 DATA ADD,NV3,NV6,NT1 DATA GCHAR,NV4,NT1,NV8 L510 DATA CEQ,NV7,NC9,NT1 DATA IF,NT1,L520,L530 L520 DATA ADD,NV5,NC13,NT1 DATA LET,NV5,NT1 L530 DATA CEQ,NV8,NC9,NT1 DATA IF,NT1,L540,L550 L540 DATA ADD,NV5,NC13,NT1 DATA LET,NV5,NT1 L550 DATA NEXT,FOR6+2 L560 DATA CLT,NV5,NC22,NT1 DATA IF,NT1,L450 L580 L590 FOR7 DATA FOR,NV6,NC13,NC23,ONE,0,0 L600 DATA READ,NV7,NV9 L610 DATA LET,NA1,NV6,NC13,NV7 L620 DATA LET,NA1,NV6,NC3,NV9 L630 DATA NEXT,FOR7+2 L640 DATA HCHAR,NV4,NV3,NC11 L650 DATA LET,NV10,NC19 L660 FOR8 DATA FOR,NV11,NC13,NC7,ONE,0,0 L670 FOR9 DATA FOR,NV6,NC13,NC16,ONE,0,0 L680 DATA SBTRCT,NV11,NC13,NT1 DATA MLTPLY,NT1,NC16,NT2 DATA ADD,NT2,NV6,NT3 DATA LET,NV10,NT3 L690 DATA ADD,NV4,NA1,NV10,NC13,NT1 DATA ADD,NV3,NA1,NV10,NC3,NT2 DATA GCHAR,NT1,NT2,NV7 L700 DATA CEQ,NV7,NC9,NT1 DATA CEQ,NV7,NC10,NT2 DATA ADD,NT1,NT2,NT3 DATA IF,NT3,L701,L703 L701 DATA LET,NV7,NC10 L702 DATA GOTO,L710 L703 DATA LET,NV7,NC12 L710 DATA ADD,NV4,NA1,NV10,NC13,NT1 DATA ADD,NV3,NA1,NV10,NC3,NT2 DATA HCHAR,NT1,NT2,NV7 L720 DATA CEQ,NV7,NC12,NT1 DATA IF,NT1,L740 L730 DATA NEXT,FOR9+2 L740 DATA NEXT,FOR8+2 L750 DATA LET,NV10,NC19 L760 FOR10 DATA FOR,NV11,NC13,NC7,ONE,0,0 L770 FOR11 DATA FOR,NV6,NC13,NC16,ONE,0,0 L780 DATA SBTRCT,NV11,NC13,NT1 DATA MLTPLY,NT1,NC16,NT2 DATA ADD,NT2,NV6,NT3 DATA LET,NV10,NT3 L790 DATA ADD,NV4,NA1,NV10,NC3,NT1 DATA SBTRCT,NV3,NA1,NV10,NC13,NT2 DATA GCHAR,NT1,NT2,NV7 L800 DATA CEQ,NV7,NC9,NT1 DATA CEQ,NV7,NC10,NT2 DATA ADD,NT1,NT2,NT3 DATA IF,NT3,L801,L803 L801 DATA LET,NV7,NC10 L802 DATA GOTO,L810 L803 DATA LET,NV7,NC12 L810 DATA ADD,NV4,NA1,NV10,NC3,NT1 DATA SBTRCT,NV3,NA1,NV10,NC13,NT2 DATA HCHAR,NT1,NT2,NV7 L820 DATA CEQ,NV7,NC12,NT1 DATA IF,NT1,L840 L830 DATA NEXT,FOR11+2 L840 DATA NEXT,FOR10+2 L850 DATA LET,NV10,NC19 L860 FOR12 DATA FOR,NV11,NC13,NC7,ONE,0,0 L870 FOR13 DATA FOR,NV6,NC13,NC16,ONE,0,0 L880 DATA SBTRCT,NV11,NC13,NT1 DATA MLTPLY,NT1,NC16,NT2 DATA ADD,NT2,NV6,NT3 DATA LET,NV10,NT3 L890 DATA SBTRCT,NV4,NA1,NV10,NC13,NT1 DATA SBTRCT,NV3,NA1,NV10,NC3,NT2 DATA GCHAR,NT1,NT2,NV7 L900 DATA CEQ,NV7,NC9,NT1 DATA CEQ,NV7,NC10,NT2 DATA ADD,NT1,NT2,NT3 DATA IF,NT3,L901,L903 L901 DATA LET,NV7,NC10 L902 DATA GOTO,L910 L903 DATA LET,NV7,NC12 L910 DATA SBTRCT,NV4,NA1,NV10,NC13,NT1 DATA SBTRCT,NV3,NA1,NV10,NC3,NT2 DATA HCHAR,NT1,NT2,NV7 L920 DATA CEQ,NV7,NC12,NT1 DATA IF,NT1,L940 L930 DATA NEXT,FOR13+2 L940 DATA NEXT,FOR12+2 L950 DATA LET,NV10,NC19 L960 FOR14 DATA FOR,NV11,NC13,NC7,ONE,0,0 L970 FOR15 DATA FOR,NV6,NC13,NC16,ONE,0,0 L980 DATA SBTRCT,NV11,NC13,NT1 DATA MLTPLY,NT1,NC16,NT2 DATA ADD,NT2,NV6,NT3 DATA LET,NV10,NT3 L990 DATA SBTRCT,NV4,NA1,NV10,NC3,NT1 DATA ADD,NV3,NA1,NV10,NC13,NT2 DATA GCHAR,NT1,NT2,NV7 L1000 DATA CEQ,NV7,NC9,NT1 DATA CEQ,NV7,NC10,NT2 DATA ADD,NT1,NT2,NT3 DATA IF,NT3,L1001,L1003 L1001 DATA LET,NV7,NC10 L1002 DATA GOTO,L1010 L1003 DATA LET,NV7,NC12 L1010 DATA SBTRCT,NV4,NA1,NV10,NC3,NT1 DATA ADD,NV3,NA1,NV10,NC13,NT2 DATA HCHAR,NT1,NT2,NV7 L1020 DATA CEQ,NV7,NC12,NT1 DATA IF,NT1,L1040 L1030 DATA NEXT,FOR15+2 L1040 DATA NEXT,FOR14+2 L1050 DATA JOYST,NC13,NV12,NV13 L1060 DATA CNE,NV12,NC19,NT1 DATA CNE,NV13,NC19,NT2 DATA MLTPLY,NT1,NT2,NT3 DATA IF,NT3,L1050 L1070 DATA DIVIDE,NV12,NC7,NT1 DATA ADD,NV3,NT1,NT2 DATA LET,NV3,NT2 L1080 DATA DIVIDE,NV13,NC7,NT1 DATA SBTRCT,NV4,NT1,NT2 DATA LET,NV4,NT2 L1090 DATA GCHAR,NV4,NV3,NV7 L1100 DATA CEQ,NV7,NC10,NT1 DATA IF,NT1,L1110,L1130 L1110 DATA DIVIDE,NV13,NC7,NT1 DATA DIVIDE,NV12,NC7,NT2 DATA ADD,NV4,NT1,NT3 DATA SBTRCT,NV3,NT2,NT4 DATA HCHAR,NT3,NT4,NC10 L1120 DATA GOTO,L640 L1130 DATA DIVIDE,NV12,NC7,NT1 DATA SBTRCT,NV3,NT1,NT2 DATA LET,NV3,NT2 L1140 DATA DIVIDE,NV13,NC7,NT1 DATA ADD,NV4,NT1,NT2 DATA LET,NV4,NT2 L1150 DATA GOTO,L1050 LASTLN DATA STOP OPTBAS DATA 0 NC0 ZERO DATA 0 ONE DATA 1 PI DATA 3 RND DATA 0 NC1 DATA 8 NC2 DATA 11 NC3 DATA 2 NC4 DATA 9 NC5 DATA 7 NC6 DATA 65 NC7 DATA 4 NC8 DATA 33 NC9 DATA 34 NC10 DATA 88 NC11 DATA 89 NC12 DATA 96 NC13 DATA 1 NC14 DATA 736 NC15 DATA 31 NC16 DATA 3 NC17 DATA 23 NC18 DATA 100 NC19 DATA 0 NC20 DATA 30 NC21 DATA 22 NC22 DATA 6 NC23 DATA 12 NV0 NV1 DATA 0 C NV2 DATA 0 N NV3 DATA 0 X NV4 DATA 0 Y NV5 DATA 0 T NV6 DATA 0 I NV7 DATA 0 A NV8 DATA 0 A1 NV9 DATA 0 B NV10 DATA 0 LO NV11 DATA 0 S NV12 DATA 0 JX NV13 DATA 0 JY NT1 DATA 0 NT2 DATA 0 NT3 DATA 0 NT4 DATA 0 SC0 SC1 DATA SC1+2 BYTE 16,70,70,70,70,70,70,70,70,70 BYTE 70,70,70,70,70,70,70 EVEN SC2 DATA SC2+2 BYTE 16,56,56,48,48,50,50,48,48,56 BYTE 56,48,48,50,50,48,48 EVEN SC3 DATA SC3+2 BYTE 16,56,48,48,56,49,67,48,56,66 BYTE 69,48,56,49,52,50,50 EVEN SC4 DATA SC4+2 BYTE 16,70,70,52,52,70,70,49,49,70 BYTE 70,52,52,70,70,49,49 EVEN SV0 SA0 SA1 DATA 12,5,0 MZ$ BSS 156 NA0 NA1 DATA 12,2,0 LOS BSS 78 FRSTDT L570 BYTE 1,48,1,49,1,48,1,50,1,48 BYTE 1,51,1,48,1,49,1,49,1,50 BYTE 1,49,1,51,1,49,1,49,1,50 BYTE 1,50,1,50,1,50,1,49,1,48 BYTE 1,50,1,49,1,51,1,49 LASTDT EVEN COPY "DSK2.RUNTIME1" COPY "DSK2.RUNTIME2" END so you see the file is nothing but labels with the basic commands broken down to needed parts. The runtime files are added to the code at the bottom. They are a great read too as they contain all of his subs for assembly equivalents for basic commands. As I told you in chat the other day I'm building a new compiler based on this on but executed on the pc for speed. I'm far from having anything postable for it, but I'm getting there and it includes a full text editor that you can type your basic code in and see the assembly source output. after this contest is done, I'm going to hit it hard and get something going so people can try it. And maybe some of the gurus on here can help me include tibits Harry didn't like disk access that seems very complicated in assembly.
-
Just posting a snip-it I just made. In my Rogue I have 1 status bar for all info. So when something is on that line and something writes over it I was adding enough spaces to the string to make it 32 long so it would be sure to erase the entire last line. This worked but used extra code space, well it worked until I had a stat bar that can reduce in length and make the last number look like a double number. Now I thought about how to fix this since basic doesn't have the RPT command in XB. This was my solution. 1 BL$="............................" 2 S$="some short text" 3 S$=S$&SEG$(BL$,1,LEN(BL$)-LEN(S$)) 4 PRINT S$ In my code I'm using spaces of course but I wanted something visual to see to test with so we have periods. But you see no matter how short the string is it will buff it out with what is in the BL$ string. Thought it might be useful to someone. John
-
Last update before I go to Texas for a long weekend. I felt like I needed to get something done so I picked a small item to do. Food. You can now eat in the game by using command T. it reduces hunger by 25. If you are full you can't eat so no food wasting, although it you are at 1 and eat you only get a reduction of 1 so some waste. When you eat you have a stat change and it prints your stat bar. The stat bar is changed a bit and this is what it all means Heart - hit points S - speed, might have a boot here since I do mean walking speed F - Find chance%, not sure what final pic will be. H - Hunger, is there a picture to describe hunger? Shield - defense chance% sword - attack chance% DM - attack damage max Leg - amount of food on hand. Everything has max and min values Here is my potential key list not all active yet and more may come. A-(A)TTACK B-(B)REAK TRAP C-(C)LIMB LADDER D-MOVE LEFT OR ACTION LEFT E-MOVE UP OR ACTION UP F-(F)IND TRAP OR SECRECT DOOR G-(G)ET ITEM H- I-CHECK (I)NVENTORY J- K- L-(L)OOK M-DISAR(M) TRAP N- O-(O)PEN DOOR OR CHEST P- Q- R- S-MOVE LEFT OR ACTION LEFT T-EA(T) U-(U)SE FROM LIST, ITEM,SCROLL,POTION V- W- X-MOVE DOWN OR ACTION DOWN Y- Z-SHOW CHARACTER STATS So that's the game for atleast the next 5 days How long is this comp? I got alot more to get done, lol.
-
Why am I compelled to get a beige console?
jchase1970 replied to OLD CS1's topic in TI-99/4A Development
I've seen that add and I think it is beige. Maybe a reg PEB just painted beige for the ad and a real unit might have never been made. But I'm sure a beige one was on paper somewhere just never had time to come to light of day. -
It's on my mazes memory and dungeons thread, but here it is again, 100 RANDOMIZE 110 DIM MZ$(12,5) 120 CALL CLEAR 130 CALL COLOR(8,11,2) 140 CALL COLOR(9,2,7) 150 C=65 160 N=4 170 CALL CHAR(33,"FFFFFFFFFFFFFFFF") 180 CALL CHAR(34,"FFFFFFFFFFFFFFFF") 190 CALL CHAR(88,"8800220088002200") 200 CALL CHAR(89,"80081C08BE081422") 210 CALL CHAR(96,"FF44FF11FF44FF11") 220 CALL HCHAR(2,1,33,736) 230 FOR X=2 TO 31 240 FOR Y=3 TO 23 250 IF INT(RND*100)<C THEN 260 ELSE 270 260 CALL HCHAR(Y,X,34) 270 NEXT Y 280 NEXT X 290 FOR X=2 TO 31 300 FOR Y=3 TO 23 310 T=0 320 FOR I=-1 TO 1 330 CALL GCHAR(Y+I,X,A) 340 IF A=34 THEN 350 ELSE 360 350 T=T+1 360 CALL GCHAR(Y,X+I,A) 370 IF A=34 THEN 380 ELSE 390 380 T=T+1 390 IF T>N-1 THEN 400 ELSE 420 400 CALL HCHAR(Y,X,34) 410 GOTO 430 420 NEXT I 430 NEXT Y 440 NEXT X 450 T=0 460 X=INT(RND*30)+2 470 Y=INT(RND*22)+2 480 FOR I=-1 TO 1 490 CALL GCHAR(Y+I,X,A) 500 CALL GCHAR(Y,X+I,A1) 510 IF A=34 THEN 520 ELSE 530 520 T=T+1 530 IF A1=34 THEN 540 ELSE 550 540 T=T+1 550 NEXT I 560 IF T<6 THEN 450 570 DATA 0,1,0,2,0,3,0,1,1,2,1,3,1,1,2,2,2,2,1,0,2,1,3,1 580 DIM LOS(12,2) 590 FOR I=1 TO 12 600 READ A,B 610 LOS(I,1)=A 620 LOS(I,2)=B 630 NEXT I 640 CALL HCHAR(Y,X,89) 660 FOR S=1 TO 4 670 FOR I=1 TO 3 680 LO=(S-1)*3+I 690 CALL GCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 700 IF (A=34)+(A=88)THEN 701 else 703 701 A=88 702 goto 710 703 A=96 710 CALL HCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 720 IF A=96 THEN 740 730 NEXT I 740 NEXT S 760 FOR S=1 TO 4 770 FOR I=1 TO 3 780 LO=(S-1)*3+I 790 CALL GCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 800 IF (A=34)+(A=88)THEN 801 else 803 801 A=88 802 goto 810 803 A=96 810 CALL HCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 820 IF A=96 THEN 840 830 NEXT I 840 NEXT S 860 FOR S=1 TO 4 870 FOR I=1 TO 3 880 LO=(S-1)*3+I 890 CALL GCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 900 IF (A=34)+(A=88)THEN 901 else 903 901 A=88 902 goto 910 903 A=96 910 CALL HCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 920 IF A=96 THEN 940 930 NEXT I 940 NEXT S 960 FOR S=1 TO 4 970 FOR I=1 TO 3 980 LO=(S-1)*3+I 990 CALL GCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1000 IF (A=34)+(A=88)THEN 1001 else 1003 1001 A=88 1002 goto 1010 1003 A=96 1010 CALL HCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1020 IF A=96 THEN 1040 1030 NEXT I 1040 NEXT S 1050 CALL JOYST(1,JX,JY) 1060 IF (JX<>0)*(JY<>0)THEN 1050 1070 X=X+JX/4 1080 Y=Y-JY/4 1090 CALL GCHAR(Y,X,A) 1100 IF A=88 THEN 1110 ELSE 1130 1110 CALL HCHAR(Y+JY/4,X-JX/4,88) 1120 GOTO 640 1130 X=X-JX/4 1140 Y=Y+JY/4 1150 GOTO 1050 notice that here is the LOS and that I copied and pasted it 4 times this could be made smaller and more efficient by making it 1 pass not 4 since it is the same thing done 4 time in a different direction. 660 FOR S=1 TO 4 670 FOR I=1 TO 3 680 LO=(S-1)*3+I 690 CALL GCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 700 IF (A=34)+(A=88)THEN 701 else 703 701 A=88 702 goto 710 703 A=96 710 CALL HCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 720 IF A=96 THEN 740 730 NEXT I 740 NEXT S 760 FOR S=1 TO 4 770 FOR I=1 TO 3 780 LO=(S-1)*3+I 790 CALL GCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 800 IF (A=34)+(A=88)THEN 801 else 803 801 A=88 802 goto 810 803 A=96 810 CALL HCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 820 IF A=96 THEN 840 830 NEXT I 840 NEXT S 860 FOR S=1 TO 4 870 FOR I=1 TO 3 880 LO=(S-1)*3+I 890 CALL GCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 900 IF (A=34)+(A=88)THEN 901 else 903 901 A=88 902 goto 910 903 A=96 910 CALL HCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 920 IF A=96 THEN 940 930 NEXT I 940 NEXT S 960 FOR S=1 TO 4 970 FOR I=1 TO 3 980 LO=(S-1)*3+I 990 CALL GCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1000 IF (A=34)+(A=88)THEN 1001 else 1003 1001 A=88 1002 goto 1010 1003 A=96 1010 CALL HCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1020 IF A=96 THEN 1040 1030 NEXT I 1040 NEXT S
-
Why am I compelled to get a beige console?
jchase1970 replied to OLD CS1's topic in TI-99/4A Development
Yeah I think design wise the silver was using TI's business machine style look, and when they came out with the beige they were making it look more like something friendlier to a home look. The atari 8btis the c64. They look more casual and therefore less intimidating. Of course they were looking for a cheaper production cost to since they were loosing money selling the console. Shame there business model was make profit with hardware, software is just support. If they could have realized how much money they could have made with software with the market share they, had had they not dropped out of it, they could have seen each console sold for a loss meant big profits in software that was cheap to produce after the initial developement. Basic was limiting the cheap software sales, but they should of had alot more cassette stuff available, because everyone that had a TI seemed to by a cassette cable. Some bought the player but me and my friends had cassette players already and you just plug them into it. Cassettes were much cheaper then carts and they could have made alot of profit selling them to the new owners of the system. And at the end programmers got smart to, the ADVENTURE series and TOD, buy a cartridge for fast machine interface and sell cheap cassettes for stories. -
Why am I compelled to get a beige console?
jchase1970 replied to OLD CS1's topic in TI-99/4A Development
I had a beige and my best friend had the silver and I liked mine better but neither of us had a PEB, if I had a PEB I think I would have like the matching silver one better. This year I bought one on ebay and I bought the best value one I could get, it just happen to be beige, Later I was able to a silver one for next to nothing and then a later my PEB. I have the beige on in the bed room with the games and is the one I play on since it's a nostalgia thing. The silver is with the PEB in the computer room. I have not used it much yet since the whole reason to get it the PEB was to play games on disk that I download. and to play the stuff I make on a real machine. I didn't need the PEB but it was always one of those things I wanted and never could afford, now I can. -
No DISPLAY AT you have to make a routine to write strings using hchar, not a biggie. It's more a basic compiler, but uses multiple statments on a line like XB, big char values like XB everything is integer math no flaoting point. Well here is the list from his docs for anyone that wants to see them, Following is a list of the TI BASIC operations supported by the compiler:. . As in XB, simple multiple statement lines can be used, separating the statements with the double colon. . CALL LINK("RUN") - same as RUN in XB. Cannot use RUN or RUN line # within a program.. CALL LINK("CON") - same as CON in XB. <FCTN 4> breaks the program as in XB except during INPUT.. . . All relational operators work the same as in BX. These include < > = <> <= >= . . Arithmetic operators all work as they do in BX. Exponentiation (|) not supported. Remember that dividing 5/2 will give 2, not 2.5. You can use INT in the BASIC program when dividing (for example INT(5/2) to be certain that BASIC and the compiler give the same results.. . Logic operators from XB have been included: NOT; AND; XOR; OR . . . LET - optional. REM - All remarks will be removed from the compiled program, but you can GOTO a REM statement just like in BX. Use of REM will not increase the size of the compiled program.. ! - the exclamation point REM from XB has been included.. END . STOP . GOTO . ON-GOTO . IF-THEN-ELSE - works only with line numbers, just like in BASIC. XB style of IF-THEN-ELSE not supported.. FOR-TO-STEP - step optional; +1 assumed. NEXT. . INPUT - Can use the optional prompt, but can input only 1 string or number per INPUT statement.. READ . DATA (Do not GOTO a DATA statement!). RESTORE . PRINT works like TI BASIC, including TAB and the print separators ;,:. DISPLAY - equivalent of PRINT.. . CALL CLEAR . CALL COLOR - expanded to work like XB except for color of sprites.. CALL SCREEN . CALL CHAR - expanded to work like XB.. CALL HCHAR . CALL VCHAR . CALL SOUND - cannot handle frequencies greater than 32767. (Neither can my ears!). CALL GCHAR . CALL KEY . CALL JOYST. . ABS . INT . RANDOMIZE - can be used, but has no effect; it is done automatically. RND - returns a value of 0. RND is only useful when it is multiplied by another number. i.e. INT(RND*6) gives the same results (0,1,2,3,4,5) when compiled as it does when used in BX.. SGN . SQR - gives same number as INT(SQR(N)) in BX. . ASC . CHR$ . LEN . POS . SEG$ . STR$ . VAL . String concatenation (i.e. A$&&B$) works the same as in XB. String truncated if over 255 characters; no warning given.. . DIM is optional but using it can reduce size of the compiled program.. OPTION BASE . ARRAY LIMITATION - Important!! The program being compiled cannot use nested arrays. For example, if you have the two arrays DIM A(10),DIM B(10); you can use Q=A(X+Y-Z) but you can't nest the arrays like this: Q=A(B(7)). Use of nested arrays will cause the compiled program to crash!!! For the above example you would have to split up the statement something like this: X=B(7)::Q=A(X). . GOSUB . RETURN . ON-GOSUB . . . NOT SUPPORTED:. . DEF. ATN. COS. EXP. LOG. SIN. TAN. . No File processing capabilities have been implemented at this time.. . The following have no meaning in a compiled program:. LIST. NUM. RES. BREAK. UNBREAK. CON - use CALL LINK("CON"). TRACE. UNTRACE. EDIT.
-
I agree, If the cart version of a game can benefit from compiling then it should be done.
-
EA5 file to cartridge Retroclouds wrote a very nice how to on making it a cartridge Owen. As for the contest, you made a basic contest and it wouldn't be fair to throw in compiled options now. The contest has to proceed on the idea of a basic program on a cart. After the winner is decided on that then if anyone wants to compile their code I'll gladly help out.
-
Here is a cavern made with one of the top algos, I added some LOS about as much as I dare in basic. 100 RANDOMIZE 110 DIM MZ$(12,5) 120 CALL CLEAR 130 CALL COLOR(8,11,2) 140 CALL COLOR(9,2,7) 150 C=65 160 N=4 170 CALL CHAR(33,"FFFFFFFFFFFFFFFF") 180 CALL CHAR(34,"FFFFFFFFFFFFFFFF") 190 CALL CHAR(88,"8800220088002200") 200 CALL CHAR(89,"80081C08BE081422") 210 CALL CHAR(96,"FF44FF11FF44FF11") 220 CALL HCHAR(2,1,33,736) 230 FOR X=2 TO 31 240 FOR Y=3 TO 23 250 IF INT(RND*100)<C THEN 260 ELSE 270 260 CALL HCHAR(Y,X,34) 270 NEXT Y 280 NEXT X 290 FOR X=2 TO 31 300 FOR Y=3 TO 23 310 T=0 320 FOR I=-1 TO 1 330 CALL GCHAR(Y+I,X,A) 340 IF A=34 THEN 350 ELSE 360 350 T=T+1 360 CALL GCHAR(Y,X+I,A) 370 IF A=34 THEN 380 ELSE 390 380 T=T+1 390 IF T>N-1 THEN 400 ELSE 420 400 CALL HCHAR(Y,X,34) 410 GOTO 430 420 NEXT I 430 NEXT Y 440 NEXT X 450 T=0 460 X=INT(RND*30)+2 470 Y=INT(RND*22)+2 480 FOR I=-1 TO 1 490 CALL GCHAR(Y+I,X,A) 500 CALL GCHAR(Y,X+I,A1) 510 IF A=34 THEN 520 ELSE 530 520 T=T+1 530 IF A1=34 THEN 540 ELSE 550 540 T=T+1 550 NEXT I 560 IF T<6 THEN 450 570 DATA 0,1,0,2,0,3,0,1,1,2,1,3,1,1,2,2,2,2,1,0,2,1,3,1 580 DIM LOS(12,2) 590 FOR I=1 TO 12 600 READ A,B 610 LOS(I,1)=A 620 LOS(I,2)=B 630 NEXT I 640 CALL HCHAR(Y,X,89) 650 LO=0 660 FOR S=1 TO 4 670 FOR I=1 TO 3 680 LO=(S-1)*3+I 690 CALL GCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 700 IF (A=34)+(A=88)THEN A=88 ELSE A=96 710 CALL HCHAR(Y+LOS(LO,1),X+LOS(LO,2),A) 720 IF A=96 THEN 740 730 NEXT I 740 NEXT S 750 LO=0 760 FOR S=1 TO 4 770 FOR I=1 TO 3 780 LO=(S-1)*3+I 790 CALL GCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 800 IF (A=34)+(A=88)THEN A=88 ELSE A=96 810 CALL HCHAR(Y+LOS(LO,2),X-LOS(LO,1),A) 820 IF A=96 THEN 840 830 NEXT I 840 NEXT S 850 LO=0 860 FOR S=1 TO 4 870 FOR I=1 TO 3 880 LO=(S-1)*3+I 890 CALL GCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 900 IF (A=34)+(A=88)THEN A=88 ELSE A=96 910 CALL HCHAR(Y-LOS(LO,1),X-LOS(LO,2),A) 920 IF A=96 THEN 940 930 NEXT I 940 NEXT S 950 LO=0 960 FOR S=1 TO 4 970 FOR I=1 TO 3 980 LO=(S-1)*3+I 990 CALL GCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1000 IF (A=34)+(A=88)THEN A=88 ELSE A=96 1010 CALL HCHAR(Y-LOS(LO,2),X+LOS(LO,1),A) 1020 IF A=96 THEN 1040 1030 NEXT I 1040 NEXT S 1050 CALL JOYST(1,JX,JY) 1060 IF (JX<>0)*(JY<>0)THEN 1050 1070 X=X+JX/4 1080 Y=Y-JY/4 1090 CALL GCHAR(Y,X,A) 1100 IF A=88 THEN 1110 ELSE 1130 1110 CALL HCHAR(Y+JY/4,X-JX/4,88) 1120 GOTO 640 1130 X=X-JX/4 1140 Y=Y+JY/4 1150 GOTO 1050 and here is the compiled version CLOS1.zip http://www.youtube.com/watch?v=rm77AAKWtSo
-
Well that's odd let me dl it and check. I don't know how but that was the wrong file? I uploaded the new one. I'm having alot of trouble with my uploads, not sure why.
-
Well that's odd let me dl it and check.
-
Todays update, makes it more of a game since you will died at some point. currently you can check the stats by pressing Z once you move it clears off since some stats change per move like hunger. Having it update the stats update every game loop cycle makes it to slow I think to be playable in non-overdrive mode. Since this is basic on cartridge contest I think the game needs to be enjoyable on real machine speed. Not a whole lot done, not alot of time today, been busy getting ready to go to Texas tomorrow afternoon. New file in first post.
