jstimson Posted September 10, 2014 Share Posted September 10, 2014 After watching the AMC series "Halt and Catch Fire", I found myself with a renewed interest in my vintage computer collection, with a specific desire to get back into doing something with my TI. Among my disks I found a program I wrote about 30 years ago. At the time I loved Qbert but did not have the cartridge. So with my XB in hand, I wrote a simple clone of it. Looking at it now, there are all kinds of things I would like to do with it. But first, I need to review the code that I did so long ago and get a feel again for what I had in mind. Attached is a text listing of the code as well as the program file (transferred via XMODEM from my TI). Keep in mind that I had no printer for my TI that long ago. I wrote things out by hand and tried to keep my hand-written listing in sync with the actual code. I can't recall if I had my 32k expansion at the time, or just had my XB cartridge and tape drive. In any case, this is the original program with the only modification being the addition of a version remark. As free time permits, I will be studying what I did so long ago, look for ways to speed it up, and also look at adding new features. The instructions are a little unclear on how to lead the snake off of the pyramid. The snake always follow you at 1 level below where you are, so to lead it off you need to go to the bottom row. I am open to suggestions for improvement. My one stipulation is that I want to keep this in XB with the only requirement being 32k expansion. rbert.bmpRBERT_v1.zip 8 Quote Link to comment Share on other sites More sharing options...
unhuman Posted September 10, 2014 Share Posted September 10, 2014 (edited) Loading this up now! Looks beautiful in your image. Only thing that may go a long way is compiling this... Edit: I just played... I really like the idea of filling the boxes with a square. That keeps things simple. I'd probably make the ball a little smaller. And Coily appeared out of nowhere - in the arcade he's a ball until it hits the bottom. Very impressive - it's definitely Q*Bert! Q*Bert was my favorite. I even owned a machine briefly. Edited September 10, 2014 by unhuman Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted September 10, 2014 Share Posted September 10, 2014 (edited) Thanks. I put my hands on a few incarnations, but never gave them much time. At least you have to plug in a joystick and rotate it 45 degrees. Today I only rotated my keyboard, and made quite a few mistakes anyway (because of that (=no joystick)). I'm sure one can get better at anticipating patterns or something, but I'm generally just getting stuck. At other times (games) I must clearly be much more persistent. I had a quick go at the arcade version to get acquainted with this rather nice looking beast. There's definitely a lot of charm there. Then it was on to the TI version by Parker Brothers. Very nice. Missed the obvious option for speech. Then finally on to your version. Of course putting everything into perspective (XB, retrospective, - you know). After a few hilarious rounds, I deleted the MA=MA-1 to get past level one. Nice one. Edited September 10, 2014 by sometimes99er Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 10, 2014 Author Share Posted September 10, 2014 I appreciate any feedback. As I mentioned, this is from long ago and under pretty primitive conditions for coding. I first need to reverse-engineer what I did so I can see about adding improvements. As for speech, at the time I don't believe I had the synthesizer. So that is something I will definitly be adding to the code. I also want to improve the joystick handling, see about adding some type of transporter discs, refine the graphics, etc. The official qbert for the TI is actually very well done and plays beautifully, along with fantastic graphics, character animations, and sound. I don't see XB getting anywhere close to that level, but there are many areas I can make improvements on my own version. 1 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted September 10, 2014 Share Posted September 10, 2014 Very nice! As Unhuman suggested, you should try compiling the program. The controls of Q*Bert always confused me, and this version is no exception 1 Quote Link to comment Share on other sites More sharing options...
sjt Posted September 10, 2014 Share Posted September 10, 2014 As a test I added _bert speech to the exit as found in the game. I'm a bit rusty on Xb programming, what can be used to compile a XB program? RBERT2.zip Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted September 10, 2014 Share Posted September 10, 2014 You will find everything you need here: http://atariage.com/forums/topic/224905-xb-game-developers-package/?hl=+xb%20+compiler Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 10, 2014 Author Share Posted September 10, 2014 Cool, I'll load it up on my TI this evening and try it out. I'm just now getting documenting the old code but am eager to start adding bells-and-whistles. As a test I added _bert speech to the exit as found in the game. I'm a bit rusty on Xb programming, what can be used to compile a XB program? Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 10, 2014 Author Share Posted September 10, 2014 Hmm, gonna need a little help. The two files in the archive are, presumably, a program file and a disk image file. I have not done much in the emulation side of things so having an issue getting things to run on my real TI. The program file shows up on the TI as a D128 file (used XMODEM to transfer it). As for the disk image, not sure how to handle that. The only emulation I have set up is Classic99 right now. As a test I added _bert speech to the exit as found in the game. I'm a bit rusty on Xb programming, what can be used to compile a XB program? Quote Link to comment Share on other sites More sharing options...
unhuman Posted September 11, 2014 Share Posted September 11, 2014 So - to make garbled speech, you can use CALL SPGET to get hunks of speech. I played with it eons ago - that might allow you to make weirdo sounds. 1 Quote Link to comment Share on other sites More sharing options...
sjt Posted September 11, 2014 Share Posted September 11, 2014 The disk image will run under win994a , with speech. (You must turn on the speech under prefs) Maybe someone else can jump in on the best method to get it onto your 994a. I transfer the file by network to another computer with a 3 1/2 drive and use a program called TI-99pc to create a floppy for my TI system. If you only have the 5 1/4 drive, not sure what the best method would be. Hopefully someone will step forward to help you. Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 11, 2014 Author Share Posted September 11, 2014 (edited) Just as an update on how I'm splitting my time, one thing I'm doing is running benchmark tests on various ways to do the same things in XB. For example, in my RBERT code, I used SGN() in various spots to determine the sign of a number and to act accordingly. That is probably the logical way to do it. However I found that doing a simple compare instead saves a full millisecond each time I do it. For example, "IF SGN(X)=1 THEN ...." is ever so slightly slower than "IF X>0 THEN...". So one thing I'll do is update each use of SGN() in my code. I'll also be sure to replace my calls to the terribly slow RND statement with the PEEK that gets me a random number. Even with having to RANDOMIZE before every PEEK, I can get a random number about 30% faster than using RND by itself. At some point I'm intending to share my various benchmark findings so others can take advantage of them as well. Edited September 11, 2014 by jstimson 1 Quote Link to comment Share on other sites More sharing options...
sjt Posted September 11, 2014 Share Posted September 11, 2014 A friend suggested a program called MAGICFM with a serial cable form PC to TI to transfer programs 1 Quote Link to comment Share on other sites More sharing options...
RobertLM78 Posted September 11, 2014 Share Posted September 11, 2014 (edited) A friend suggested a program called MAGICFM with a serial cable form PC to TI to transfer programs That's what I have used to share my stuff. What platform are you using, jstmson? I strongly suggest 'MoSerial' if you are running Linux. Edited September 11, 2014 by RobertLM78 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted September 11, 2014 Share Posted September 11, 2014 Hmm, gonna need a little help. The two files in the archive are, presumably, a program file and a disk image file. I have not done much in the emulation side of things so having an issue getting things to run on my real TI. The program file shows up on the TI as a D128 file (used XMODEM to transfer it). As for the disk image, not sure how to handle that. The only emulation I have set up is Classic99 right now. MagicFM is great for transferring from XModem capable term on the PC side, but the trick is to get the disk on the TI side first. Easiest thing really for transferring is a straight through serial cable and cfhdxs1 on the TI side, and HDX server on the peecee side.. Or if you want a project, a hdx daughterboard on the tI rs232 card gets you HDX software in DSR so you can use HDX1. as a device to access the pc side. I can send you a floppy with the cfhdxs1 software AND magicfm if you like just pm me with the address.. this works with properly designed usb->rs232 devices for the newer pc's without rs232 ports.. stay away from the 10$ cheapy chinese ones.. I got it working under wine in linux as well as in windows.. cfhdxs1 is basically disk manager 2000 that includes the hdx drive functionality in software.... with the daughterboard you can use DM2k or whatever.. OLD HDX1.PROGRAM etc.. daughter-boards available here: http://www.arcadeshopper.com/wp/?page_id=11#!/HDX-pcboard-(bare-PCB-no-parts)/p/21147033/category=5051340 if you want to buy a modded card here: http://www.arcadeshopper.com/wp/?page_id=11#!/Texas-Instruments-RS232-Card-with-HDX-modification-installed/p/36126191/category=5051340 lots of info in those links on hdx and to the author's site (Fred Kaal) Greg Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted September 11, 2014 Share Posted September 11, 2014 (edited) Hmm, gonna need a little help. The two files in the archive are, presumably, a program file and a disk image file. I have not done much in the emulation side of things so having an issue getting things to run on my real TI. The program file shows up on the TI as a D128 file (used XMODEM to transfer it). As for the disk image, not sure how to handle that. The only emulation I have set up is Classic99 right now. ok.. if you send a file without a tifiles header to the TI with xmodem it will default to adding a tifiles header of df128.. if you look at the file with tidir.. it will show you the type of file it is (v9t9 or tifiles) and allow you to convert it to either or format .. if your xmodeming to the TI you want it in tifiles format.. that will send the proper file type over xmodem and create it on the TI side correctly. a lot of emulation likes things in the v9t9 format rather than tifiles.. thanks to v9t9 being the emulation file/disk standard that everything's gone with.. classic99 will read both... tidir is here: ftp://ftp.whtech.com/Users/fredkaal Greg Edited September 11, 2014 by arcadeshopper Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted September 11, 2014 Share Posted September 11, 2014 (edited) Sounds like you're 90% of the way there. The folder that ends in @ is the one you want to transfer to the TI, and it sound like you are at that point. Then you just have to use Archiver 3.03 to unpack the files and put them on a disk. If you don't have Archiver on your TI you can transfer it from disk 1 in Classic 99. You can also get an earlier version from the development resources at the top of the page. This does not have XB256 built into it, but is a bit more compact. After unpacking the files for the compiler with archiver, go to Vorticon's post #7 above and go to the thread about the compiler. Go to post #48 in that thread (the last post) and make the change to RUNTIME1 If you use Win994a you can simply drop the disk image into the Win99 folder that contains disks. The disk image and the file with the @ contain the same files; just different ways of doing it. If it makes a difference, the compiler does not support speech. Edited September 11, 2014 by senior_falcon Quote Link to comment Share on other sites More sharing options...
RXB Posted September 11, 2014 Share Posted September 11, 2014 Just as an update on how I'm splitting my time, one thing I'm doing is running benchmark tests on various ways to do the same things in XB. For example, in my RBERT code, I used SGN() in various spots to determine the sign of a number and to act accordingly. That is probably the logical way to do it. However I found that doing a simple compare instead saves a full millisecond each time I do it. For example, "IF SGN(X)=1 THEN ...." is ever so slightly slower than "IF X>0 THEN...". So one thing I'll do is update each use of SGN() in my code. I'll also be sure to replace my calls to the terribly slow RND statement with the PEEK that gets me a random number. Even with having to RANDOMIZE before every PEEK, I can get a random number about 30% faster than using RND by itself. At some point I'm intending to share my various benchmark findings so others can take advantage of them as well. RXB next release will have a much faster RND than normal XB or any other 110 versions. Some tests indicate it is extremely faster. https://www.youtube.com/user/CarbonicHolyPally?feature=mhee 1 Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 11, 2014 Author Share Posted September 11, 2014 ti99dir solved my file problem. Used it to convert the v9t9 file to a normal TI program file and xmodem'ed it over to my TI no problem. The actual qbert sound effect at the end is very nice. As I optimize the program and add features, I definitely want to add touches like that to bring it to life. 2 Quote Link to comment Share on other sites More sharing options...
sjt Posted September 12, 2014 Share Posted September 12, 2014 That speech is a fairly close representation of the speech at the end of the arcade game. Glad you like it. BTW I read the developers had trouble creating speech for the game, and chose to use the garbled speech to match the speech balloons in the game. Also the character is designed the way it looks because it was suppose to shoot using it's nose. PM me if I can help Quote Link to comment Share on other sites More sharing options...
jstimson Posted September 23, 2014 Author Share Posted September 23, 2014 Well well well, I'm happy to say I've actually been able to work on this old program and update a lot of the code. It's amazing how being able to print out a listing can make a difference. I didn't have a printer 30 years ago, so everything was written on paper. Good times. I've done a lot of code cleanup. I'm not sure that the gameplay is any faster, but I did get rid of a lot of inefficiencies, redundant calculations, etc. Also changing variable names to be meaningful, more use of references instead of hard coded values, etc. I'm keeping track with rem statements in a version header. Current code is attached as a TIFILES file. Now I am going to start looking at real upgrades to the game. Things I have in mind are to make the actual pyramid closer to the Qbert one. Right now it does not have enough rows of blocks. To do that though will mean a complete change in scale of things. I will have to remake everything in 1/2 the current scale as well as take the sprites down to a magnification of 3 instead of 4. This will be the largest change to the program. Other changes I want to do are to implement the transporter disks (or something like them). Right now the coil must be lead off the bottom of the pyramid, but with transporter disks it would need to be lead off the sides. Funny enough, I expect the change in scale to actually improve gameplay. Sprites will have 1/2 the distance to travel on each move. Also having a full 7 rows on the pyramid means not being trapped into a bad position as often, there are more escape options. Here's a list of changes direct from the code.... 210 REM ************ 220 REM * R*BERT * 230 REM ************ 240 REM BY JEFF STIMSON 250 REM ORIGINAL VERSION FROM EARLY 80'S V.1.0 260 REM 11 SEP 14 CHANGE SGN TO REGULAR COMPARES 270 REM USE PEEK FOR RANDOM NUMBERS 280 REM USE DONATED SOUND FILE FOR ENDGAME 290 REM 13 SEP 14 CLEAN UP INSTRUCTIONS AND KEY INPUT 300 REM REMOVE EXPLICIT ROW/COL VARS AND MATH 310 REM 14 SEP 14 BETTER VARIABLE NAMING 320 REM CLEANER RBERT POSITION TRACKING 330 REM 19 SEP 14 CREATE VARIABLES FOR SPRITES AND CHARS 340 REM CHANGE RBERT CHAR ONLY WHEN REQUIRED 350 REM SIMPLIFY COIL ANIM CODE 360 REM USE MATH INSTEAD OF CALL COINC 370 REM 20 SEP 14 CLEAN UP COIL DIRECTION FINDER 380 REM MORE VARIABLE CLEANUP 390 REM CLEAN UP COIL AND BALL POSITION MATH 400 REM ADD ANOTHER LEVEL COLOUR 410 REM USE CALL SOUND FOR TIMING 420 REM 21 SEP 14 REPLACE GCHAR FOR BALL WITH YPOS CHECK 430 REM PLACE RBERT MOVEMENT AFTER JOYSTICK CALL 440 REM NO MORE MYSTERY VARIABLES 450 REM 23 SEP 14 REVIEW AND CALL IT A DAY 460 REM STAMP AS VERSION 1.5 RBERT_1_5.zip 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.