Opry99er Posted January 10, 2018 Share Posted January 10, 2018 Wow! All this is extremely interesting, but not practical for the more normal BASIC programmer. However, TI BASIC PLUS (TIB+) includes the full 32 sprite capability (thanks to Mark Wills) using CALL's to assembly language routines. It can be implemented using E/A, Mini Memory, or a GRAM device or a disk controller with the Myarc disk controller DSR that includes TI BASIC support. Currently the best solutions are an 80K MG GramKracker or HSGPL card, and hopefully, the FinalGROM99 will provide the ultimate solution. These three versions will allow the user to write TI BASIC programs of up to 40K and more with GROM base switching. Hopefully this is enough to "wet the appetites" of some of the would be BASIC programmers out there. Bill, could you please start a thread here in the Development forum for TIB+ discussions? I have been intrigued by this project for at least a decade now, and I am eager to hear your progress, how your hardware issues turned out, and if you have plans on implementing TIB+ somehow in conjunction with the FG99 cardridge. It's good to see you contributing here, my friend. I miss our conversations. Quote Link to comment Share on other sites More sharing options...
FDOS Posted January 10, 2018 Share Posted January 10, 2018 Hmm I put out a version of RXB that switched GROMs using a second banks of GROM for EA Cart including the Editor, GPL Assembler, EA Assembler and EA support for TI Basic. >9800 Any other page of GROM up to >983C ______________________________________________________________ RXB GROM 3 to 6 Editor/GPL Assember/Assembler/EA Support REA GROM 7 When in REA Cart would switch GROM and load requested support routines into RAM. Yes, this was also done with the original release of the Gram Kracker. TI XB was loaded in GRAM 3 - 6, and TI EA was moved to GRAM 7. They also included a lower case character set that could be loaded in GRAM 0 for the 80K version of GK. Of course I load the Tursi modified version of your TI BASIC in GRAMs 1 & 2, so that the EA enhancements work for TI BASIC programs running in GRAMS 3 - 7. Which means it will be possible to load 40K of different TI BASIC programs in all available GROM pages. Hopefully Ralph will be able to make this a reality in the next update to FG99. 1 Quote Link to comment Share on other sites More sharing options...
FDOS Posted January 10, 2018 Share Posted January 10, 2018 Bill, could you please start a thread here in the Development forum for TIB+ discussions? I have been intrigued by this project for at least a decade now, and I am eager to hear your progress, how your hardware issues turned out, and if you have plans on implementing TIB+ somehow in conjunction with the FG99 cardridge. It's good to see you contributing here, my friend. I miss our conversations. Probably a very good idea, as there are some areas I need assistance, like I had earlier. Ralph has already agreed to look into making GROMs 0 - 2, maybe only 1 & 2, available for programming. I have not heard back from him on this issue since last October. I still have a few issues to fix with my replacement TI support PC, before I can do this. I'll post an announcement in this thread when I do it. Quote Link to comment Share on other sites More sharing options...
RXB Posted January 12, 2018 Share Posted January 12, 2018 (edited) Yes, this was also done with the original release of the Gram Kracker. TI XB was loaded in GRAM 3 - 6, and TI EA was moved to GRAM 7. They also included a lower case character set that could be loaded in GRAM 0 for the 80K version of GK. Of course I load the Tursi modified version of your TI BASIC in GRAMs 1 & 2, so that the EA enhancements work for TI BASIC programs running in GRAMS 3 - 7. Which means it will be possible to load 40K of different TI BASIC programs in all available GROM pages. Hopefully Ralph will be able to make this a reality in the next update to FG99. Hmm NO that is not what I said at all. The RXB/REA used on of the other GROM Base Address entirely, you just described what RXB 2015 does with EA in GROM 7. As stated RXB and REA in different GROM PAGEs >9800 to >983C would find each other using flags I set up when the RXB or REA was selected. VDP address >3EF4 stored the GROM address of the alternate GROM used for either RXB or REA. If you started in REA it would save the GROM LSB Address second bytes of >00 to >3C which would be the is the address to return. Exampe: RXB >9800 -------------------- REA >983C --------------- VDP Address >3EF4 would contain >3C (location of REA) RXB could would always reside at >9800 GROM BASE and REA could be loaded into any other GROM BASE wanted. Edited January 12, 2018 by RXB Quote Link to comment Share on other sites More sharing options...
FDOS Posted January 12, 2018 Share Posted January 12, 2018 Hmm NO that is not what I said at all. The RXB/REA used on of the other GROM Base Address entirely, you just described what RXB 2015 does with EA in GROM 7. As stated RXB and REA in different GROM PAGEs >9800 to >983C would find each other using flags I set up when the RXB or REA was selected. VDP address >3EF4 stored the GROM address of the alternate GROM used for either RXB or REA. If you started in REA it would save the GROM LSB Address second bytes of >00 to >3C which would be the is the address to return. Exampe: RXB >9800 -------------------- REA >983C --------------- VDP Address >3EF4 would contain >3C (location of REA) RXB could would always reside at >9800 GROM BASE and REA could be loaded into any other GROM BASE wanted. I have no issue with that. I just want as much space in GROM 3 - 7 (all GROM bases) for TIB+ programs not occupied by other modules (RXB+EA or TIXB+EA or others). I just choose to create my own modules using TIB+. 1 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted January 14, 2018 Share Posted January 14, 2018 An excellent topic .... one which has confounded me, and broke the "rules" of TI BASIC. Also, one which is in entirely the wrong section of Atariage. It should be in "development" not "computers" 3 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted January 14, 2018 Share Posted January 14, 2018 Eh, it started out as a question about other programs which could do it besides Morphy then ballooned into what you see now. I have not been bothered to move it because of how it started and how it is not really developing anything but teeters on the edge as a programming thread, but more of a demonstration of something impossible. Rather than clutter up the thread with yeas and nays, if enough of the right people like your post I will move it and leave a link in this forum. 4 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted January 15, 2018 Share Posted January 15, 2018 I do apologise. I was drunk as a skunk on Rum when I commented. Subject still impresses the heck out of me though. Who would have thought these things possible in TI Basic. I certainly don't think anything like this was attempted back in the day at least not with the UK Software scene. 1 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted January 15, 2018 Share Posted January 15, 2018 I could have made use of this back when I was programming all my games in TI BASIC. Really, just a single sprite with no motion would have made me quite happy, and having a few available would have been bonkers. When did Morphy come out? Was it long enough ago that someone could have done an analysis of it, or was any of that information floating around? Boggles... 2 Quote Link to comment Share on other sites More sharing options...
digdugnate Posted January 15, 2018 Share Posted January 15, 2018 I could have made use of this back when I was programming all my games in TI BASIC. Really, just a single sprite with no motion would have made me quite happy, and having a few available would have been bonkers. When did Morphy come out? Was it long enough ago that someone could have done an analysis of it, or was any of that information floating around? Boggles... 1984 i think? Quote Link to comment Share on other sites More sharing options...
OX. Posted October 22, 2018 Share Posted October 22, 2018 The method for generate Sprites in TI BASIC was discovered in late 1984 from Tesioware (Riccardo Tesio and Corrado Tesio two italian brothers). Something like modify the VDP registers in TI-BASIC. all was published and explained on the italian magazine: MC Microcomputer n34 pages 152 and 152 1sprite.JPG 2sprite.JPG trying to translate from italian some parts of the published text, it says: "...As you can see, the TI BASIC interpreter can be enchanted and sprites can also be obtained on the unexpanded TI-99/4A. For the avoidance of misunderstandings, we inform you that the sprites thus obtained will not have the same versatility as those supplied using the extended basic which provides a very complete set of instructions for sprites management like movement, magnification, overlap, etc. However, these sprites obtained with the TI-BASIC only and a cassette recorder have some remarkable properties: - they are not affected by other characters that scroll underneath without deleting them; - can be placed anywhere on the screen within a coordinate system with 192x256 positions; - They allow to realize a "pixel to pixel" movement (using the special program) avoiding the annoying effect of flicker that is instead obtained by moving a figure inside the 24x32 grid of print positions. It is possible for example (just taking advantage of the fact that sprites and normal characters overlap without erasing each other) to be able to draw scenarios and backgrounds for your games without these being erased during the action. [....] as you can see the speed is not excessive, but the merits of these sprites such as transparency, absence of flicker, independent colors, possibility of speed adjustment, opens new horizons to improve the programs in TI BASIC. [...] " in the issues n35 of the MC Microcomputer, there was the listing of Morphy: 17270399_1927563584196529_1211046010_n.jpg 12970515_1747449468874609_2108093946_o.jpg which used precisely this explained technique: http://www.digitanto.it/mc-online/PDF/Articoli/035_152_159_0.pdf Hope that this help to understand better Iv'e been wondering recently if someone would be so kind as to do a compiled version of Morphy, it's just too slow as a TI Basic program and I think a compiled version would actually be playable. Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted October 23, 2018 Share Posted October 23, 2018 Yes it could be nice, i just tried to play with classic99 and maxCPU, it was funny but maybe too much fast... Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted October 23, 2018 Share Posted October 23, 2018 You can find Morphy on the tigameshelf.net site under the TI Basic section along with detailed loading instructions. 1 Quote Link to comment Share on other sites More sharing options...
OX. Posted October 24, 2018 Share Posted October 24, 2018 Iv'e been wondering recently if someone would be so kind as to do a compiled version of Morphy, it's just too slow as a TI Basic program and I think a compiled version would actually be playable. Anyone? Quote Link to comment Share on other sites More sharing options...
Retrospect Posted October 24, 2018 Share Posted October 24, 2018 Anyone? Hi Ox. I can't promise I'll do the compiling , as other projects are taking up all my spare time, but I am curious, is Morphy a MiniMemory game, and if so, does it have any commands specific to that module that we would have to work around with the compiler? Quote Link to comment Share on other sites More sharing options...
jrhodes Posted October 25, 2018 Share Posted October 25, 2018 ... is Morphy a MiniMemory game, and if so, does it have any commands specific to that module that we would have to work around with the compiler? Morphy has a version loadable from TI Basic, and there is also a mini-mem version that i have never tried. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted October 26, 2018 Share Posted October 26, 2018 By the way, the program which was referenced earlier was a combination of sometimes99er's brick scrolling program and my own SPRITE animation of a warrior character from my Beryl Reichardt universe. Cool that he has been given new life! Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted February 5, 2021 Share Posted February 5, 2021 On 1/6/2018 at 1:07 PM, senior_falcon said: Earlier I had opined that being able to use auto sprite motion was probably not all that useful. Here's a demo that proves me wrong. The little marching man from Notwhoyouthink's demo has been set into motion by manually updating the sprite table. (CALL COLOR(1...) and CALL COLOR(2,...)) The subroutine that updates the column looks for a keypress and if it finds one it jumps the little guy ahead. He does not land exactly where he should but it is close enough, and you just need to update the row and column to get him exactly where he should be. You can see that here sprite motion is quite useful despite the inability to use CALL LOCATE from XB. (This should be used on the latest version of Classic99. Some earlier ones seem to be slow at handling interrupts, so that sound lists and sprite motions happen too slowly.) I just tried this in Win994a and found that it simply exits Win99.. No colorful screen - it just closes the window. So either Win994a or Classic99 is not behaving properly. I will look into it a little more and maybe transfer it to my real TI to see what happens there. @Casey - if you want to test this you would need to change the 55,215 in line 12 to 55,207. Ciro discovered that the code listed in post #93 has a few errors. I must not have used the "code" button. Whatever I did caused a couple of lines to be truncated. Below is the proper code. 2 FOR I=1 TO 128 4 READ X 6 F$=F$&CHR$(X) 8 NEXT I 10 DATA 0,0,0,0,226,0,215,224,1,40,215,204,216,32,131,78,131,212,215,224,131,212,215,224,1,245,4,224 12 DATA 131,196,2,12,67,0,16,17,7,248,55,215,158,142,0,0,0,64,0,21,8,159,212,0,0,3,33,111 14 DATA 0,0,0,0,0,0,0,0,25,202,81,5,77,0,215,224,131,249,215,204,143,60,212,224,0,5,2,140,67,16,17 16 DATA 247,215,224,0,51,215,204,16,0,212,224,0,166,215,224,0,63,215,224,1,153,115,12,212,204,6,12 18 DATA 22,253,4,91,53,103,0,0,131,80,2,4,5,255 110 CALL CHAR(146,"0") 120 CALL CHAR(147,"0") 135 CALL CHAR(152,"1122334455667788") 136 CALL CHAR(153,"99AABBCCDDEEFF10") 140 CALL CHAR(154,"1010101010101010") 150 CALL CHAR(155,"1010101010101010") 155 CALL CHAR(159,"0") 160 CALL CHAR(96,"0F1F1C1C1E1F0F03") 170 CALL CHAR(97,"0303070702020203") 180 CALL CHAR(98,"84C4241424C4841F") 190 CALL CHAR(99,"C43C040480804070") 200 CALL CHAR(100,"0F1F1C1C1E1F0F03") 210 CALL CHAR(101,"0303070703030303") 220 CALL CHAR(102,"80C0201020C18204") 230 CALL CHAR(103,"A8502840000080E0") 240 CALL CHAR(104,"0F1F1C1C1E1F0F03") 250 CALL CHAR(105,"030307070305080E") 260 CALL CHAR(106,"80C0201020C08000") 270 CALL CHAR(107,"0040FF4080008070") 280 CALL CLEAR 290 CALL SCREEN(2) 292 OPEN #1:F$ 294 CALL HCHAR(18,1,168,192) 300 CALL COLOR(1,8,8) 310 CALL COLOR(2,1,1) 320 CALL COLOR(4,1,16) 330 REM sprite walking below 340 MSB=1 350 LSB=1 360 CALL COLOR(2,MSB,LSB) 370 CALL COLOR(3,13,1) 380 GOSUB 490 390 CALL COLOR(2,MSB,LSB) 400 CALL COLOR(3,13,5) 410 GOSUB 490 420 CALL COLOR(2,MSB,LSB) 430 CALL COLOR(3,13,9) 440 GOSUB 490 450 CALL COLOR(2,MSB,LSB) 460 CALL COLOR(3,13,5) 470 GOSUB 490 480 GOTO 360 490 MSB=MSB-(LSB=16) 500 LSB=LSB+1+16*(LSB=16) 510 CALL KEY(0,K,S) 520 IF S=0 THEN 560 530 CALL CHAR(146,"F008") 531 CALL CHAR(146,"FA08") 532 CALL CHAR(146,"0608") 533 CALL CHAR(146,"1008") 534 CALL CHAR(146,"0") 535 CALL COLOR(1,8,8) 550 MSB=MSB+1 560 MSB=MSB+16*(MSB>16) 570 RETURN 2 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted February 5, 2021 Share Posted February 5, 2021 On 1/9/2018 at 10:08 PM, senior_falcon said: Here is a simple demo using moving sprites with nothing but TI BASIC. Press any key to launch the missile. The animated GIF makes the motion somewhat jerky, but it is smooth on Classic99. There is no CALL COINC, so how do you determine whether the missile hits the UFO? Actually it is not that hard. You set it up so the UFO always starts at the same location and with the same velocity. The missile always starts from the same location and launches with the same velocity. Then by counting the number of loops before the key is pressed you can determine at the time of launch whether the UFO will be intercepted. If it is a miss then you let the missile fly off the screen. If it is a hit you freeze the missile and UFO together, erase them and set off an explosion. The missile flight is just for visual effect. Hardly a ground breaking game but it does show some of the possibilities for this technique. A bowling game might be possible using this. I do not know if the timing would be right on real iron, and I think it would be off with a European TI running at 50 Hz. Ciro likes to make my life difficult ? This was post #99 and as before, he found that in the code I posted some of the lines were truncated. Below is the proper code. 100 CALL CHAR(159,"0") 110 FOR I=1 TO 128 120 READ X 130 F$=F$&CHR$(X) 140 NEXT I 150 DATA 0,0,0,0,226,0,215,224,1,40,215,204,216,32,131,78,131,212,215,224,131,212,215,224,1,245,4,224 160 DATA 131,196,2,12,67,0,16,17,7,248,55,215,158,142,0,0,0,64,0,21,8,159,212,0,0,3,33,111 170 DATA 0,0,0,0,0,0,0,0,25,202,81,5,77,0,215,224,131,249,215,204,143,60,212,224,0,5,2,140,67,16,17 180 DATA 247,215,224,0,51,215,204,16,0,212,224,0,166,215,224,0,63,215,224,1,153,115,12,212,204,6,12 190 DATA 22,253,4,91,53,103,0,0,131,80,2,4,5,255 200 CALL CHAR(146,"0") 210 CALL CHAR(147,"0") 220 REM colors 230 CALL CHAR(152,"1122334455667788") 240 CALL CHAR(153,"99AABBCCDDEEFF10") 250 CALL CHAR(154,"F0F0F0F0F0F0F0F0") 260 CALL CHAR(155,"F0F0F0F0F0F0F0F0") 270 REM missile 280 CALL CHAR(92,"0103030303030304") 290 CALL CHAR(93,"0") 300 CALL CHAR(94,"0080808080808040") 310 CALL CHAR(95,"0") 320 REM saucer patterns 330 CALL CHAR(96,"01033FFFDEFF3F07") 340 CALL CHAR(97,"0") 350 CALL CHAR(98,"0080F8FEF6FEF8C0") 360 CALL CHAR(99,"0") 370 REM explosion 380 CALL CHAR(100,"0041055000052189") 390 CALL CHAR(101,"2310060110044001") 400 CALL CHAR(102,"80220008806200A0") 410 CALL CHAR(103,"D580248008A00200") 420 OPEN #1:F$ 430 REM saucer 440 CALL CLEAR 450 CALL SCREEN(2) 460 CALL CLEAR 470 PRINT "HITS:";HIT;" MISSES:";MISS; 480 REM missile 490 CALL COLOR(1,12,8) 500 CALL COLOR(2,8,12) 510 CALL COLOR(3,12,13) 520 CALL COLOR(4,1,9) 530 REM saucer 540 CALL COLOR(5,2,1) 550 CALL COLOR(6,1,1) 560 CALL COLOR(7,13,1) 570 CALL COLOR(8,1,8) 580 X=0 590 N=0 600 CALL CHAR(146,"00000000000A") 610 CALL KEY(0,K,S) 620 X=X+1 630 IF X=73 THEN 840 640 IF S<1 THEN 610 650 CALL CHAR(146,"E0000000000A") 660 IF (X<19)+(X>25)THEN 690 670 TOP=106 680 GOTO 700 690 TOP=130 700 N=N+1 710 IF N<TOP THEN 700 720 IF TOP=130 THEN 810 730 CALL CHAR(146,"0") 740 HIT=HIT+1 750 CALL COLOR(3,13,5) 760 CALL COLOR(4,1,16) 770 CALL COLOR(8,1,1) 780 FOR I=1 TO 300 790 NEXT I 800 GOTO 850 810 CALL CHAR(146,"00000000000A") 815 CALL KEY(0,K,S) 820 X=X+1 830 IF X<55 THEN 815 840 MISS=MISS+1 850 GOTO 460 5 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted February 5, 2021 Share Posted February 5, 2021 This is very impressive! Also when I pressed break after playing it, TI Basic became rather psychadelic. Really interesting stuff 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted February 5, 2021 Share Posted February 5, 2021 6 hours ago, senior_falcon said: Ciro likes to make my life difficult ? This was post #99 and as before, he found that in the code I posted some of the lines were truncated. Below is the proper code. Thanks @senior_falcon for the update. And I am sorry to say that I still need to make your life difficult a bit ? this is why I feel so dumb that I can't be able to understand why the MISSILE/UFO code still not perfectly works for me. I had to try to fix that truncated lines adding " , 8 ) " but I have had the same bad result compared to the .GIF video you posted as demo to show. this is my result: 2021-02-05_10-28-54.mp4 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted February 5, 2021 Share Posted February 5, 2021 I don't know why this wouldn't work for you. Try copying the code and then be sure you are in TI BASIC and use "paste", not "paste XB'. That works for me. I copied and pasted the faulty code, added the ,8 to lines 490 and 570 and that also worked. If still doesn't work I will send you the file for this. 1 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted February 5, 2021 Share Posted February 5, 2021 It worked for me, the missile struck the UFO and the explosion sprite happened. In Ciro's the missile is stopping just when it should be registering the collision 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted February 5, 2021 Share Posted February 5, 2021 Ok, I do not know why but was my modified Classic.ini file that create problems with this MISSILE program, now I installed the standard one and it works ? I really didn't thought about the INI files problem also because all other examples worked good, just with this I had the problem. anyway thanks ? important is that I can try it now 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted February 5, 2021 Share Posted February 5, 2021 2 hours ago, ti99iuc said: Ok, I do not know why but was my modified Classic.ini file that create problems with this MISSILE program, now I installed the standard one and it works ? I really didn't thought about the INI files problem also because all other examples worked good, just with this I had the problem. anyway thanks ? important is that I can try it now Can you tell me what was different? Unless it was disk configuration, I'd want to fix any bugs rather than have people just work around them. 2 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.