Opry99er Posted November 12, 2010 Author Share Posted November 12, 2010 Thanks Steve. I might try just that. I could just about release it now, but it is not as feature-packed as I would like. Apparently I am having difficulties with Classic99 trying to run sometimes's pattern shift code--- to enhance the visuals. I can run everything but his program. Weird. Quote Link to comment Share on other sites More sharing options...
unhuman Posted November 12, 2010 Share Posted November 12, 2010 Hard to get inspired when you're hitting your head against a ceiling, though. Sounds like a crap game idea right there. Quote Link to comment Share on other sites More sharing options...
matthew180 Posted November 12, 2010 Share Posted November 12, 2010 I was messing with the "protection" flag on the SAVE command. A few notes: 1. This only works in XB, console BASIC with E/A cart does not *do* the protection thing. Also, you cannot load an XB program saved with the protection in console BASIC (probably obvious, but I had to try.) 2. When you save with the protection option, the file save is noticeably longer. 3. You can interactively enable / disable the protection on a program that has never even been saved: CALL PEEK(-31931,A) PRINT A 0 5 PRINT "TEST" SAVE DSK1.PRG1,PROTECTED <fctn-10> reset CALL PEEK(-31931,A) PRINT A 0 OLD DSK1.PRG1 CALL PEEK(-31931,A) PRINT A 128 LIST * PROTECTION VIOLATION * CALL INIT CALL LOAD(-31931,0) LIST 5 PRINT "TEST" CALL LOAD(-31931,128) LIST * PROTECTION VIOLATION * <fctn-10> reset 5 PRINT "TEST" CALL PEEK(-31931,A) PRINT A 0 CALL INIT CALL LOAD(-31931,128) LIST * PROTECTION VIOLATION * CALL LOAD(-31931,0) LIST 5 PRINT "TEST" The value -31931 equates to address >8345 which is not mentioned anywhere in the E/A manual or TI-Intern. This is obviously an XB only memory location to indicate if protection is enabled or not. Does anyone know if XB has been disassembled like the console GROMs in the TI-Intern? Matthew Quote Link to comment Share on other sites More sharing options...
matthew180 Posted November 13, 2010 Share Posted November 13, 2010 To me, it's just very abstract. I can do simple things, but when it gets to setting up all the tables and whatnot, I get lost. Well, computers are abstract really, so it takes thinking about problems a different way. Luckily computers are also very logical and consistent, so once you get the hang of it *everything* starts to make a lot more sense. The secret to computers is understanding memory. That's really it. If you break down a computer program you will discover that most of what the code is doing is moving data around. That's it. What that data means at any given point in time is usually for our (human) interpretation. From the computer's point of view it is probably very confusing and repetitive. Think about it, moving a byte of data from address 135 to 136 to 137, etc. over a period of 3 seconds means nothing, unless you happen to be the human playing a game and that data causes a spot of light to be displayed on the screen that is perceived as a bullet, missile, or whatever. Programming is mostly an exercise in data organization and manipulation. If you are confused about something, ask very specific questions. Don't try to get a big answer to a multi-part problem, break it down and solve very small parts. Also, you absolutely will not learn good program structure programming in an old-school BASIC. Any language that uses line numbers and that does not emphasize functions and data structures (or "methods" and "objects" (I don't care what people want to call it)) is not going to be very good for moving to the next level. Don't get me wrong, BASIC can be fun and rapid, and you can produce some good programs, but it is limited (unless you move up to a structured BASIC on a modern system.) I would suggest: 1. Ask specific *single* questions at a time. Something like "how to I make a game" is way to general. 2. Read code! Go see how someone else solved a problem. Change something and see what it does. Mess with it until you understand how it ticks. 3. Hack. Try something. See if you can figure out how to solve a problem. Write lots of small programs that isolate something you are trying to understand. 4. Understand how and why programs are broken up into parts, i.e. functions, aka subroutines or whatever you want to call them. 5. Have fun (or if you are not having fun, make sure you are getting paid!) I have not seen any programming related questions from you lately... what's up with that??? Matthew Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 13, 2010 Author Share Posted November 13, 2010 (edited) Matthew, Honestly, I have gotten a bit discouraged. I know it's not good--- but I've hit a rut on the TI right now. I need to finish Calimari Carl, I need to get some motion going on Beryl Reichardt, and I can't seem to get any of it done. So much so that I have spent 3 hours in the last two days playing NHL Hockey '96 on my Super Nintendo instead of working on code. Sometimes I hit a wall and I can't get off my ass to brush off the dust and move on. I watch how much success you guys have in assembly and it is inspiring, but it is also frustrating. I love XB, but I've gotten a dangerous taste for assembly and I feel like I'm playing with a toy instead of writing a game nowadays when I code in XB. I can't seem to finish a simple task even in XB, so when I try to do simple things in assembly it REALLY gets me down in the mouth. It's not that I don't WANT to do it... of course I would love to pound away for hours on end and come up with something great. Recently I've just been trying to stay in the TI-state of mind by posting pictures of my books, going through boxes of stuff I have in storage, trying to recover an old tape game I found... Anything but coding, sadly. Your rendition of my Beryl Reichardt scroller is absolutely my favorite piece of code I've ever seen in action. As much as I love Never-Lander, Pitfall!, Parsec, Henhouse... when I watch your program execute with my graphics, I get very excited. I think I actually teared up the first time I ran it. (don't tell anyone) But it kind of made me embarassed by my original version, and I basically just lost interest... At that point, I was making alot of assembly progress... but how could I take something as brilliant as your scroller and add my hacky kid-code to it?? I made a decision to get back to basics and really LEARN memory and source code. What happened, though, was that I essentially got lost and forgot most of what I learned. It is an indictment of my insecurity with coding. I started writing games less than two years ago, I have absolutely ZERO programming experience except in BASIC and XB, and the whole concept (while simple) largely eludes me. You guys are great, and I love watching the brillance unfold. I just hope I can contribute someday the way you guys do. If I were fluent in assembly, I'd put out some ridiculous sh**. I'm passionate about writing games, but I'm no good in assembly and I'm disillusioned with XB... That's a tough spot to be in. Edited November 13, 2010 by Opry99er Quote Link to comment Share on other sites More sharing options...
matthew180 Posted November 13, 2010 Share Posted November 13, 2010 (edited) Keep in mind that I have been programming since 1983 (I was 13). Also keep in mind that a lot of what I know about the TI I have only learned in the last few years. I didn't have the resources back in the day that I have now, but today I can apply 25+ years of knowledge to the problems, so it comes quickly. The frustration you are experiencing is what usually drives "kiddies" away from programming, once they realize it actually takes a long time to learn and produce something. Don't get frustrated though! You need to keep if fun, so keep doing things that you enjoy and keep learning. Our brains perceive learning as fun, so give yourself a challenge, but not a brick wall. I know you want to dive in and make something like a CRPG or something, but that is too big of a project to start out on. That's like the people who want to "make the next first person shooter" as their introduction to programming or making games. I assure you that my first scrolling maze was clumsy, ugly, and I won't even publish the code. It was stuff I wrote back between 1984 and 1988 and I can't believe it even works. I got very *lucky* with the commands I was using. I only had a vague idea of the difference between MOV and MOVB, and I thought VSBW, and such were assembly instructions (I had no idea what was really happening.) The first assembly language program I wrote I wanted to clear the screen, so I wrote this: START CLR R0 END After a lot of guessing I managed to get that to assemble, and it even ran! But it did not clear the screen... ugh. I was desperate! XB had CALL CLEAR and I hated that! The *other* BASICs out there had the elite CLS for clearing the screen and I wanted that. CLR was as close an instruction I could find in the E/A manual to CLS, so I tried that. The text did not mention that CLR cleared the screen though, and that was confusing. It was not until the Lottrup book that I really learned how to clear the screen and things started to fall together. But you have to start with small programs that do one thing. Mess with it until you understand, then either add to it or make another small program to test another piece. Once you understand the pieces, you can put them all together into something bigger, knowing that each piece works on its own. This helps when you have to debug and fix problems too, since you know certain parts work already, you can isolate problems quicker and easier. Programming in not unlike doing a really big puzzle. You find pieces and make sections, then fit those together into yet a larger section. In the end you are mostly fitting chucks together with small individual pieces finally gluing the whole thing together into the final picture. Even today I write a *lot* of small programs to test parts of code in isolation, then bring them into a larger project. I do this using C, PHP, Assembly, VHDL (it is very critical when doing hardware!), etc. These are basic "programming" skills and they apply to any language and any platform. Matthew Edited November 13, 2010 by matthew180 Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted November 13, 2010 Share Posted November 13, 2010 Excellent points, Matthew! I also started programming when I was around 10 years old. And frankly, I had NO clue what I was doing. I read the BASIC learning book, and studied programs, but so much of it was weird and incomprehensible for years. There was an actual solid computer class at my junior high school that may have helped, but the teacher retired the year before I could go to it and the new teacher eliminated all the programming classes from the curriculum. So I was stuck reading my books and trying to figure it out. Lottrup's book just made things worse, because frankly, the Mini-Memory assembler is a TERRIBLE platform to develop on... it works, but that's about the most you can say about it. I remember the first time I realized I could use strings to store numeric data. What I actually did was store letters, like A, B, ect, and use those as codes for items and mapping. And boy was I ever excited about it! I wrote some Zelda-esque game with it, which sadly I can't seem to find now... I tried writing a LOS algorithm by hand, but in Extended BASIC it was way too slow... my theory was I could use the SIN and COS functions to plot out from the center of the display to the edge, and just do a 360 degree sweep around to determine tile blockage. I think I got bored watching it after about 10 minutes and realized it wasn't a tenable way to do it. I had similar assembly disasters to Matt's, misinterpreting what commands did, confusing them with BASIC-like commands. I laugh at it now, because I hadn't realized that the source code for a complete game (Tombstone City) was on the second E/A disk. It probably wouldn't have helped a lot to study it, but who knows... Even after I picked back up TI programming after my return to college 8 years ago, I still had to do some studying with an older eye to figure out how the OS was structured. I actually had set out to write Ultima II on the TI, I had planned to store and dynamically load the tile graphics using a complicated queue system into a full-bitmap mode design. Not really a great way to use memory or cycles... better to write programs that take advantage of the native design, not try and force another on it. I know how you feel with the frustration. I've felt that so many times... heck, I'm feeling that now. I'm at a pretty heavy "lots of work, not a lot of return" stage with my CRPG engine, and I'm finding Minecraft, Avernum 3, and other games an easy distraction. We do hobby programming for fun, after all... when it's not fun, it's easy to fall off the track. But don't give up on your games! Think about the 10-line contest. You had no problem finishing things there, right? The trick is scale. You need to build some smaller programs to test out what you want to do with the big projects. Spend a little time just experimenting. Share your code efforts here on the forums, we'll be happy to offer advice and praise when you need it. Adamantyr Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 13, 2010 Author Share Posted November 13, 2010 Thanks alot guys. I have been able to finish games in XB in the past... I could finish Carl NOW... But I'm not having fun with it at this point. I want to write in assembly or forth, and XB just doesn't make me excited anymore. I'll have to start from the beginning again... And that's okay. . If I ever want to get to the point where Beryl Reichardt is a possibility for my ability-level, I need to go step by step. I couldn't have done Honeycomb 2 years ago-- I couldn't have written an assembly scroller a year ago. But I "got lucky" on a bunch of stuff and didn't know really what the hell I was doing.... I checked VDP for boundary detection when I should have been checking CPU... Little crap like that. I'm going to start tomorrow and have fun again. Matthew and I had a brief but enlightening conversation on IP Chat... My goal is Beryl--- so, how do I get there? Where do i start? How about a more efficient scroller? Maybe a slideshow showing some graphics... Maybe a demo of Beryl using KSCAN to move him around the screen.... Picking up little treasure chests and adding to the "score." My goal every time I code is to write a game or work towards writing a game... Perhaps I should just play around for a while... "hack". Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted November 13, 2010 Share Posted November 13, 2010 My goal every time I code is to write a game or work towards writing a game... Perhaps I should just play around for a while... "hack". Hacking is good! You mentioned being discouraged with XB. Would it surprise you to learn that while I program mostly in assembly I often use XB to prove a concept or work out a subroutine? None of us knew how to program from day 1. I remember dragging the EA manual to Thanksgiving at my uncles house many moons ago, having NO IDEA what I was reading or how it worked. But I sure thought it looked cool sitting there with 500 pounds of paper on mylap. I eventually stopped dragging that foreign language around and spent time typing programs from Compute! and other publications, then modified the programs to understand what various commands did. Eventually I started writing my own code. Matthew's comment about small programs is applicable especially in XB. Additionally, I find it helpful to outline a routine on paper. I often do this in an editor in outline, indented format. It allows me to think through what I want to code before I get mired in the details. Now, I'd be fibbing if I said I always did that - I often jump right in. Depends on the routine and my mood. Above all don't get frustrated if you can't churn out code at one sitting. Even the best book authors don't write their novels in an afternoon Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 13, 2010 Author Share Posted November 13, 2010 Thanks... Of course XB is great for concepts-- I find it easy to work with and fun. But when it comes to doing games now, I had been finding it difficult to get motivated when the project got farther along.... When it got tough, you know... I would get bored and whatnot. All good. You guys are great. I'll get back to Carl at some point here. For now, I'm going to focus on doing some small assembly things and post when I have some success... -off to the dungeon Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted November 13, 2010 Share Posted November 13, 2010 I watch how much success you guys have in assembly and it is inspiring, but it is also frustrating. Eh, when I watch you and Mark Wills play the guitar, I feel inspired to go and have a crack at it myself. But my fingers they get sore and nails they break. It sounds like shit, and now I won't embarrass myself down that line anymore. I guess guitar playing is a lot like programming. Years of practice. Doing the simple stuff first, slowly, steadily, maybe with certain amount of stubbornness, moving forward. I guess changing genre, from like heavy metal gallop rhythm to mixolydian scale blues is maybe hard too. What do I know !? Quote Link to comment Share on other sites More sharing options...
+acadiel Posted November 13, 2010 Share Posted November 13, 2010 I vaguely remember some programs you could load but not list or save - even BEFORE a run. Forget what it would do, but it wasn't good Bill Gronos had written some ingenious stuff in the Disk Fixer manual that talked about hex modifications to XB programs that would basically lock out or corrupt the machine if you tried to LIST or SAVE it after unprotecting it. There were other programs, like DiskIt (Maple Leaf Software) that would read from CS1 and save as a PROGRAM file for you - either XB or assembly. No matter if it was protected or not. :-) Quote Link to comment Share on other sites More sharing options...
matthew180 Posted November 13, 2010 Share Posted November 13, 2010 Very good analogy! I didn't think of using music to make the connection with Owen. Owen, think of writing Beryl the same as composing a song that makes the top 40, or what ever. Owen, how long did it take you to get to the point where you could compose something like the FlyGuy II music? Months of practice? Years? A decade or two? Programming is so unlike learning to play an instrument or speak a foreign language, and once you learn the basics, you spend the rest of your life getting better. Matthew Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 13, 2010 Author Share Posted November 13, 2010 Makes perfect sense. Right now I'm learning what the strings on the instrument are--- next I learn chords... Then I learn a song or two. Hopefully soon I'll be able to write my own songs... Then maybe a symphony. That symphony is Beryl... But I can't write a symphony without learning chords first. You guys rock. Making a bit of progress today. . Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted November 13, 2010 Share Posted November 13, 2010 I once tried to put a few strings together to form a binary chord, but then the garbage collector came and reclaimed. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 17, 2010 Author Share Posted November 17, 2010 (edited) I will be staying at my sisters place tonight--- this means I will be able to load Maze Man from cassette, disable protection, SAVE to CF7, and post the game (if all goes well). I also plan to make an instructional video of this process for future generations of 99ers who may stumble on an old copy protected cassette or disk. This (I guess) will be the first of my CF7 videos as well. Edited November 17, 2010 by Opry99er Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 17, 2010 Author Share Posted November 17, 2010 A wrinkle.... My /4a is refusing to recognize my CF7.... I hope I don't have to reinitialize... Ugh Quote Link to comment Share on other sites More sharing options...
jchase1970 Posted November 17, 2010 Share Posted November 17, 2010 Hey, I missed the few post where you said you feel like you are in a rut. I to have been programming for 30 yrs, since 10 or so. At 1 time I could sit down at a TI99, a TRS80 model 3, COCO, APPLE 2e,2c ,ATARI 8bit and the PC and program in their versions of basic without needing a reference. I programed in pascal on the pc for 5 yrs or so even entering coding contests for it. I can code in c++ although not very good and I'm good in Blitz Basic. I also used to contribute to Euphoria, a wonderful language that I doubt anyone even knows of lol. I'm not bragging at all, just listing time and experience invested and now to the point. I have always wanted to learn assembly on any machine, but I never had the tools or the books to get anything working - zip, nothing. So I just stayed away from it since I realized that anything I wanted to do but couldn't because of speed issues was becoming a thing of the past with each new processor. Now PC's are so fast, that I bet you can do 8way scrolling in GW-Basic, that's the basic that came with all early pcs. Part of MS-DOS. So where do that put me now with assembly, can I sit down and just start pumping stuff out. No. I'm struggling big time myself. I may have a easier time understanding some of the stuff but it is still alot to learn. And I swear from past experience, THE ONLY WAY TO GET GOOD at programming is TO PROGRAM. Meaning many, many little programs to just learn the syntax and usage. I've been reading everything I can find on assembly on the TI but none of it will be any good if I don't keep practicing what I learn. If you don't use what you learn you will loose it and have to learn it again. So there, yeah, I too am struggling with assembly. But my approach is still the same as I learned the other languages. Type in a example program. Change it to do something different. Make it work by reading up on it and asking questions from other people until I understand the syntax. Comment every line you put in so you remind yourself what that command is doing, this reinforces it in your mind. I too am in a rut on programing, I have a simple project for the crap game comp and am just spinning my wheels getting it done. I have several ideas for a basic game, but none are really coming together either. Quote Link to comment Share on other sites More sharing options...
jchase1970 Posted November 17, 2010 Share Posted November 17, 2010 oh hey, I hope you get maze man transferred, I'ld like to try it. Good luck with that! Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 17, 2010 Author Share Posted November 17, 2010 Well, I have successfully loaded Maze Man from cassette, disabled copy protection and transferred to my CF7. I also was able to take the volume from my CF drive and put it into Classic99. This was a VERY fun project and I'm glad it's complete. I hope you guys like the game. It is quite funny---trying to play it with no manual, but if you play for a few minutes, you can figure it out. Thanks to you guys for your interest... Below I have listed a few funky elements of the game as well as posted the code and some screenshots. Have at it, boys!!! Here are a few peculiarities of this game... 1) Sometimes your enemy is a large white SPRITE who pays no attention to boundaries. Other times, it is a small green enemy which looks the same as the big SPRITE, but it is small and must stay in bounds. Strangely, interaction with the large white SPRITE does not cause you to lose lives, but steals your "arrows". I have not yet tried to interact with the small green enemy. 2) There are many ways to reach another part of the maze... ladders lead you to other levels, or you can walk out of the screen, causing the next screen to be drawn and you're in another part of the maze. This gets confusing, but I'm sure someone who really wants to do it could map it out. (assuming it's not all random) 3) I have run this twice on the real gear and one in emulation. It has started me with a different enemy each time. First time, large white SPRITE, second time, no enemy on the current map screen, and last time--- small green enemy. It seems very very random, but pretty cool all at the same time. I'm not sure how "good" the game is, as I'm not sure about what the goal is, other than stay alive and collect gold. I have posted the code below and attached a zipfile containing a FIAD version of the game. Below the collapsed codebox are several screenshots of the game running on Classic99. 100 RANDOMIZE 101 CALL CLEAR 102 CALL MAGNIFY(2) 104 FOR J=1 TO 7 :: READ P,Q,R :: CALL SPRITE(#J,R,7,P,Q) :: NEXT J 105 DATA 50,90,77,50,110,65,50,130,90,50,150,69,70,100,77,70,120,65,70,140,78,100 111 PRINT " PLEASE WAIT 30 SECONDS": : 112 PRINT " WHILE THE MAZE IS LOADED" 116 V$="22448C5261904824" 117 U$="10C8390686691222" 118 W$="183C7EFF42423C18" 119 X$="7EBDBDBD24242436" 120 A$="FFFFFFFFFFFFFFFF" 130 B$="FFC3A59999A5C3FF" 140 C$="FF81FF81FF81FF81" 150 D$="1898FF3D3C3C2424" 160 E$="007C625F51311F00" 161 F$="000402FFFF020400" 162 G$="183C5A99FF181818" 163 H$="7E997EFF89898900" 164 I$="0010385410101010" 165 J$="000010207F201000" 166 K$="080808082A1C0800" 167 L$="000804FE04080000" 168 AH$="ARROWS " 169 GG$="GOLD " 170 CALL CHAR(122,A$) :: CALL CHAR(35,B$) :: CALL CHAR(37,C$) :: CALL CHAR(100,D$) 210 CALL CHAR(105,E$) :: CALL CHAR(97,F$) :: CALL CHAR(130,G$) :: CALL CHAR(40,H$) 214 CALL CHAR(98,I$) :: CALL CHAR(99,J$) :: CALL CHAR(101,K$) :: CALL CHAR(102,L$) :: CALL CHAR(116,W$) :: CALL CHAR(117,X$) 215 CALL CHAR(36,U$) :: CALL CHAR(38,V$) 220 CALL COLOR(9,7,1) :: CALL COLOR(10,7,1) :: CALL COLOR(11,16,1) :: CALL COLOR(2,13,1) :: CALL COLOR(13,13,1) 230 OPTION BASE 1 240 DIM A(5,5,4),B(100),C(100) 260 FOR J=1 TO 5 270 FOR K=1 TO 5 290 FOR L=1 TO 4 :: A(J,K,L)=INT(100*RND) :: B(J*K*L)=A(J,K,L) :: C(J*K*L)=B(J*K*L) :: NEXT L 320 NEXT K 330 NEXT J 335 CALL SCREEN(12) :: CALL DELSPRITE(ALL) 340 GOTO 745 350 PRINT "z zz z z z z z z z" 360 RETURN 370 PRINT " z z z z z$&z z z z" 380 RETURN 390 PRINT " zz z z z$&z zz z z z " 400 RETURN 410 PRINT " z z z zz z z z$&zz z " 420 RETURN 430 PRINT " zz z$&zz z z z z z zz" 440 RETURN 450 PRINT " zz z z z z z z " 460 RETURN 470 PRINT " zz zz z z zz " 480 RETURN 490 PRINT "$zz z z z z z " 500 RETURN 510 PRINT " z$&z z zz z z z z" 520 RETURN 530 PRINT " zzz z zz z z " 540 RETURN 550 PRINT " z z zz z z z z&" 560 RETURN 570 PRINT " z z z z z z z " 580 RETURN 590 PRINT " zz zzz zzz z zzzz zz" 600 RETURN 610 PRINT " z # z z zz z" 620 RETURN 630 PRINT " z z zz z zz " 640 RETURN 650 PRINT " z z zz z z " 660 RETURN 670 PRINT " zz zz z z z " 680 RETURN 690 PRINT " zz z zz zz z z" 700 RETURN 710 PRINT " z z zz z z z % " 720 RETURN 730 PRINT " z z z z zz zz zz " 740 RETURN 745 MM=4 :: AH=3 750 J=1 :: K=1 :: L=1 :: X=15 :: Y=14 800 Z=A(J,K,L) 810 RANDOMIZE Z 820 PRINT "zzzzzz zzzzzzzzzz zzzzzzz" 830 FOR M=1 TO 20 840 AA=INT(20*RND)+1 850 ON AA GOSUB 350,370,390,410,430,450,470,490,510,530,550,570,590,610,630,650,670,690,710,730 855 NEXT M 860 PRINT "zzzzzz zzzzzzzzzz zzzzzzz" 880 CALL VCHAR(2,2,122,10) 890 CALL VCHAR(2,30,122,10) 900 CALL VCHAR(14,2,122,10) 910 CALL VCHAR(14,30,122,10) 920 CALL HCHAR(X,Y,100) 921 DISPLAY AT(24,1):AH$;AH 922 DISPLAY AT(1,1):GG$;GG 923 FOR JJ=1 TO(MM-1) :: CALL HCHAR(1,31-JJ,100) :: NEXT JJ 925 IF(J=3)*(K=3)*(L=3)THEN 7000 926 IF B(J*K*L)<55 THEN 927 ELSE 930 927 GOSUB 2600 930 IF B(J*K*L)>55 THEN 950 940 GOTO 960 950 GOSUB 2000 960 IF B(J*K*L)<55 THEN 962 961 GOSUB 2070 962 GOSUB 3350 967 CALL JOYST(1,XX,YY) 968 CALL KEY(0,SH,ST) :: CALL KEY(1,SI,SU) 969 IF SI=18 THEN 2750 970 IF SH=15 THEN 972 971 GOTO 979 972 CALL CLEAR :: MM=MM-1 973 IF MM<1 THEN 5000 ELSE 750 979 XY=((XX+3*YY)/4)+5 980 ON XY GOTO 960,1240,960,1130,960,1350,960,1020,960 1010 GOTO 960 1020 R=1 1040 CALL GCHAR(X-1,Y,ZZ) 1041 GOSUB 8000 1075 IF ZZ=105 THEN 1076 ELSE 1080 1076 GOSUB 1900 1080 CALL HCHAR(X,Y,32) 1090 X=X-1 1100 CALL HCHAR(X,Y,100) 1101 CALL SOUND(5,-2,5) 1110 IF X<3 THEN 1460 1120 GOTO 960 1130 R=2 1150 CALL GCHAR(X,Y-1,ZZ) 1151 GOSUB 8000 1181 IF ZZ=105 THEN 1182 ELSE 1190 1182 GOSUB 1900 1190 CALL HCHAR(X,Y,32) 1200 Y=Y-1 1201 CALL SOUND(5,-2,5) 1210 CALL HCHAR(X,Y,100) 1220 IF Y<3 THEN 1530 1230 GOTO 960 1240 R=3 1260 CALL GCHAR(X+1,Y,ZZ) 1261 GOSUB 8000 1291 IF ZZ=105 THEN 1292 ELSE 1300 1292 GOSUB 1900 1300 CALL HCHAR(X,Y,32) 1310 X=X+1 1320 CALL HCHAR(X,Y,100) 1321 CALL SOUND(5,-2,5) 1330 IF X>22 THEN 1600 1340 GOTO 960 1350 R=4 1370 CALL GCHAR(X,Y+1,ZZ) 1371 GOSUB 8000 1401 IF ZZ=105 THEN 1402 ELSE 1410 1402 GOSUB 1900 1410 CALL HCHAR(X,Y,32) 1420 Y=Y+1 1430 CALL HCHAR(X,Y,100) 1431 CALL SOUND(5,-2,5) 1440 IF Y>29 THEN 1670 1450 GOTO 960 1460 CALL CLEAR :: CALL DELSPRITE(ALL) :: X=23 1480 IF J>1 THEN 1510 1490 J=5 1500 GOTO 1520 1510 J=J-1 1520 GOTO 800 1530 CALL CLEAR :: CALL DELSPRITE(ALL) :: Y=30 1550 IF K>1 THEN 1580 1560 K=5 1570 GOTO 1590 1580 K=K-1 1590 GOTO 800 1600 CALL CLEAR :: CALL DELSPRITE(ALL) :: X=2 1620 IF J<5 THEN 1650 1630 J=1 1640 GOTO 1660 1650 J=J+1 1660 GOTO 800 1670 CALL CLEAR :: CALL DELSPRITE(ALL) :: Y=2 1690 IF K<5 THEN 1720 1700 K=1 1710 GOTO 1730 1720 K=K+1 1730 GOTO 800 1740 CALL CLEAR :: CALL DELSPRITE(ALL) 1750 IF L>1 THEN 1780 1760 L=4 1770 GOTO 1790 1780 L=L-1 1790 GOTO 800 1800 CALL CLEAR :: CALL DELSPRITE(ALL) 1810 IF L<4 THEN 1840 1820 L=1 1830 GOTO 1850 1840 L=L+1 1850 GOTO 800 1900 GG=GG+1 :: C(J*K*L)=0 1920 CALL SOUND(10,880,5) 1925 DISPLAY AT(1,6)SIZE(7):GG 1930 RETURN 2000 UU=INT(RND*14)+6 :: VV=INT(RND*19)+6 2020 U=UU+INT(RND*6)-3 2030 V=VV+INT(RND*6)-3 2035 IF C(J*K*L)=0 THEN 2050 2040 CALL HCHAR(UU,VV,105) 2050 CALL HCHAR(U,V,40) 2060 RETURN 2070 RANDOMIZE 2080 MS=INT(RND*4)+1 :: ON MS GOTO 2090,2190,2290,2390 2090 CALL GCHAR(U-1,V,ZZ) 2091 IF U-1<3 THEN 2460 2100 IF ZZ=100 THEN 2500 2110 IF ZZ=32 THEN 2120 ELSE 2460 2120 CALL HCHAR(U,V,32) :: U=U-1 :: CALL HCHAR(U,V,40) :: RETURN 2190 CALL GCHAR(U,V-1,ZZ) 2191 IF V-1<3 THEN 2460 2200 IF ZZ=100 THEN 2500 2210 IF ZZ=32 THEN 2230 ELSE 2460 2230 CALL HCHAR(U,V,32) :: V=V-1 :: CALL HCHAR(U,V,40) :: GOTO 2080 2290 CALL GCHAR(U+1,V,ZZ) 2291 IF U+1>22 THEN 2460 2300 IF ZZ=100 THEN 2500 2310 IF ZZ=32 THEN 2330 ELSE 2460 2330 CALL HCHAR(U,V,32) :: U=U+1 :: CALL HCHAR(U,V,40) :: RETURN 2390 CALL GCHAR(U,V+1,ZZ) 2391 IF V+1>29 THEN 2460 2400 IF ZZ=100 THEN 2500 2410 IF ZZ=32 THEN 2430 ELSE 2460 2430 CALL HCHAR(U,V,32) :: V=V+1 :: CALL HCHAR(U,V,40) :: GOTO 2080 2460 RETURN 2500 CALL SCREEN(7) :: MM=MM-1 2510 CALL HCHAR(U,V,32) :: CALL DELSPRITE(ALL) 2520 CALL HCHAR(X,Y,40) 2540 FOR JJ=1 TO 4 :: CALL SOUND(100,-3,0) :: NEXT JJ 2570 FOR JJ=1 TO 400 :: NEXT JJ 2585 CALL CLEAR 2586 IF MM<1 THEN 5000 2587 CALL SCREEN(12) :: GOTO 750 2600 IF C(J*K*L)=0 THEN 2609 2601 IF B(J*K*L)=0 THEN 2609 2605 IF B(J*K*L)<15 THEN 2700 2606 IF B(J*K*L)<50 THEN 2610 2608 GOSUB 3300 2609 RETURN 2610 AX=INT(RND*14)+6 :: AY=INT(RND*21)+6 2630 CALL HCHAR(AX,AY,97) 2640 IF B(J*K*L)<40 THEN 2608 2650 RETURN 2700 BX=INT(RND*14)+6 :: BY=INT(RND*21)+6 2720 CALL HCHAR(BX,BY,130) :: RETURN 2750 IF AH<1 THEN 960 2751 IF BH<1 THEN 960 2755 CALL COLOR(9,5,1) 2760 CALL JOYST(1,XX,YY) 2770 IF(XX=0)*(YY=4)THEN 2810 2780 IF(XX=-4)*(YY=0)THEN 2910 2790 IF(XX=0)*(YY=-4)THEN 3010 2800 IF(XX=4)*(YY=0)THEN 3110 2801 CALL KEY(1,AQ,BQ) 2802 IF AQ=18 THEN 2803 ELSE 2760 2803 CALL COLOR(9,7,1) 2805 GOTO 960 2810 S=1 :: AH=AH-1 2816 DISPLAY AT(24,1):AH$;AH 2819 IF X-S<1 THEN 2907 2820 CALL GCHAR(X-S,Y,ZZ) 2825 IF ZZ=122 THEN 2907 2830 IF ZZ=35 THEN 2907 2835 IF ZZ=37 THEN 2907 2836 IF ZZ=40 THEN GOSUB 3210 2840 CALL HCHAR(X-S,Y,98) :: CALL SOUND(5,1000,5) 2845 S=S+1 2849 IF X-S<1 THEN 2905 2850 CALL GCHAR(X-S,Y,ZZ) 2855 IF ZZ=122 THEN 2905 2860 IF ZZ=35 THEN 2905 2865 IF ZZ=37 THEN 2905 2866 IF ZZ=40 THEN GOSUB 3210 2870 CALL HCHAR((X-S)+1,Y,32) :: GOTO 2840 2905 CALL HCHAR((X-S)+1,Y,32) 2907 CALL COLOR(9,7,1) :: GOTO 960 2910 S=1 :: AH=AH-1 2911 DISPLAY AT(24,1):AH$;AH 2916 IF Y-S<1 THEN 3007 2919 CALL GCHAR(X,Y-S,ZZ) 2922 IF ZZ=122 THEN 2907 2925 IF ZZ=35 THEN 2907 2928 IF ZZ=37 THEN 2907 2929 IF ZZ=40 THEN GOSUB 3210 2931 CALL HCHAR(X,Y-S,99) :: CALL SOUND(5,1000,5) :: S=S+1 2937 IF Y-S<1 THEN 3005 2940 CALL GCHAR(X,Y-S,ZZ) 2943 IF ZZ=122 THEN 3005 2946 IF ZZ=35 THEN 3005 2949 IF ZZ=37 THEN 3005 2950 IF ZZ=40 THEN GOSUB 3210 2952 CALL HCHAR(X,(Y-S)+1,32) 2955 GOTO 2931 3005 CALL HCHAR(X,(Y-S)+1,32) :: CALL COLOR(9,7,1) :: GOTO 960 3010 S=1 :: AH=AH-1 3011 DISPLAY AT(24,1):AH$;AH 3016 IF X+S>24 THEN 3107 3019 CALL GCHAR(X+S,Y,ZZ) 3022 IF ZZ=122 THEN 2907 3025 IF ZZ=35 THEN 2907 3028 IF ZZ=37 THEN 2907 3029 IF ZZ=40 THEN GOSUB 3210 3031 CALL HCHAR(X+S,Y,101) :: CALL SOUND(5,1000,5) :: S=S+1 3037 IF X+S>24 THEN 3105 3040 CALL GCHAR(X+S,Y,ZZ) 3043 IF ZZ=122 THEN 3105 3046 IF ZZ=35 THEN 3105 3049 IF ZZ=37 THEN 3105 3050 IF ZZ=40 THEN GOSUB 3210 3052 CALL HCHAR((X+S)-1,Y,32) :: GOTO 3031 3105 CALL HCHAR((X+S)-1,Y,32) :: CALL COLOR(9,7,1) :: GOTO 960 3110 S=1 :: AH=AH-1 3111 DISPLAY AT(24,1):AH$;AH 3116 IF Y+S>32 THEN 3207 3119 CALL GCHAR(X,Y+S,ZZ) 3122 IF ZZ=122 THEN 2907 3125 IF ZZ=35 THEN 2907 3128 IF ZZ=37 THEN 2907 3129 IF ZZ=40 THEN GOSUB 3210 3131 CALL HCHAR(X,Y+S,102) :: CALL SOUND(5,1000,5) :: S=S+1 3137 IF Y+S>32 THEN 3205 3140 CALL GCHAR(X,Y+S,ZZ) 3143 IF ZZ=122 THEN 3205 3146 IF ZZ=35 THEN 3205 3149 IF ZZ=37 THEN 3205 3150 IF ZZ=40 THEN GOSUB 3210 3152 CALL HCHAR(X,(Y+S)-1,32) :: GOTO 3131 3205 CALL HCHAR(X,(Y+S)-1,32) :: CALL COLOR(9,7,1) :: GOTO 960 3210 B(J*K*L)=0 :: RETURN 3300 RANDOMIZE 3305 SX=INT(RND*255)+1 :: SY=INT(RND*255)+1 3310 SXX=INT(RND*50)-30 :: SYY=INT(RND*50)-30 3315 CALL SPRITE(#1,40,16,SX,SY,SXX,SYY) 3320 RETURN 3350 CALL POSITION(#1,GX,GY) 3355 EATX=INT(GX/8) :: EATY=INT(GY/8) 3365 IF X+3<EATX THEN 3410 3366 IF X-3>EATX THEN 3410 3367 IF Y+3<EATY THEN 3410 3368 IF Y-3>EATY THEN 3410 3385 CALL MOTION(#1,0,0) :: CALL SCREEN(14) :: CALL SOUND(500,-3,2) 3395 AH=AH-1 :: GG=GG-1 3396 IF AH<0 THEN AH=0 3397 IF GG<0 THEN GG=0 3398 DISPLAY AT(24,1):AH$;AH 3399 DISPLAY AT(1,1)SIZE(:GG$;GG 3400 CALL SCREEN(12) :: CALL DELSPRITE(#1) :: GOSUB 3300 3410 RETURN 4000 AH=AH+1 4005 C(J*K*L)=0 :: CALL SOUND(10,880,5) 4015 DISPLAY AT(24,1):AH$;AH 4020 ON R GOTO 1080,1190,1300,1410 4030 BH=BH+1 :: GOTO 4005 4040 GOTO 4005 5000 PRINT TAB(;"YOU HAVE LOST": : 5010 PRINT TAB(;"YOUR LAST MAN": : 5020 PRINT TAB(;"YOU ARE DEAD": : : : 5030 PRINT TAB(7);"THE GAME IS OVER": : : : : 5040 FOR JJ=1 TO 1000 :: NEXT JJ 6000 CALL CLEAR :: CALL SCREEN( :: CALL DELSPRITE(ALL) 6010 PRINT "PRESS 1) TO QUIT": : 6020 PRINT " 2) TO CONTINUE": :" SAME MAZE": : 6030 PRINT " 3) TO PLAY A NEW MAZE": : : 6040 CALL KEY(0,OP,ST) 6050 IF OP=49 THEN 6090 6060 IF OP=50 THEN 745 6070 IF OP=51 THEN 100 6080 GOTO 6040 6090 END 7000 U=12 :: V=16 :: B(J*K*L)=55 7010 GOSUB 3300 7020 GOSUB 2050 7025 CALL HCHAR(12,15,116) :: CALL HCHAR(13,15,117) 7030 GOTO 960 7500 IF GG>4 THEN 7505 ELSE 2500 7505 CALL CLEAR :: CALL SCREEN(11) 7510 PRINT "CONGRADULATIONS*YOU MADE IT" 7520 FOR S=1 TO 8 :: CALL SOUND(300,S*220,0) :: NEXT S 7530 CALL SOUND(1000,262,0,330,0,392,0) :: GOTO 6000 8000 IF ZZ=116 THEN 7500 8001 IF ZZ=117 THEN 7500 8002 IF ZZ=40 THEN 2500 8003 IF ZZ=122 THEN 960 8004 IF ZZ=35 THEN 1740 8005 IF ZZ=37 THEN 1800 8006 IF ZZ=97 THEN 4000 8007 IF ZZ=130 THEN 4030 8008 IF ZZ=36 THEN 960 8009 IF ZZ=38 THEN 960 8010 RETURN This is the title screen... while we wait for the maze to be drawn. =) This is a screen with no enemies, but you can see an arrow for you to pick up... Good to be prepared!!!!! Better grab the bow here as well... don't want to be without that. =) Ooooooh.... a white SPRITE... spooky! Don't get anywhere NEAR this dude, or you're gonna lose arrows!!!! The green enemy!!! Yikes... I think this dude can kill you, so watch out. =) MAZEMAN.zip 1 Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted November 17, 2010 Share Posted November 17, 2010 Cute game! Good work getting it rescued. I look forward to playing it later tonight. That "wait 30 seconds for maze to draw" is hitting me where I live right now though.... :/ 1 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 17, 2010 Author Share Posted November 17, 2010 (edited) The load time is no big deal... also remember that the load time will not be taken into account for this contest. =) If you look at the code (which I have JUST NOW started doing) it uses PRINT strings, as though it were a BASIC game... as a matter of fact, aside from the one SPRITE, this IS a BASIC game. I think it may have been adapted to XB, as multi-statement lines are not used very much in the actual game code. =) Edited November 17, 2010 by Opry99er Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted November 17, 2010 Share Posted November 17, 2010 The load time is no big deal... also remember that the load time will not be taken into account for this contest. =) If you look at the code (which I have JUST NOW started doing) it uses PRINT strings, as though it were a BASIC game... as a matter of fact, aside from the one SPRITE, this IS a BASIC game. I think it may have been adapted to XB, as multi-statement lines are not used very much in the actual game code. =) Could have been one of many that were "converted" (in a quick and slapdash way) by someone from another platform, to make their creation saleable on multiple computers. A lot of the ads for the tiny "kitchen table" software companies in 99'er would advertise games on multiple machines. Some of the ones I've seen in the past looked like the coder had just picked up his 99/4A from Sears that week. Anyone who's seen the TI and Commodore 64 versions of Cosmi's "Aztec Challenge" side-by-side will know what I mean. Quote Link to comment Share on other sites More sharing options...
InfernalKeith Posted November 17, 2010 Share Posted November 17, 2010 And yeah, for my game, I'm planning on kinda sticking to that BASIC convention that set up time is ok, if front-loaded before play starts, as long as play is relatively smooth. I think I have an idea that'll speed it up, but even if that doesn't work, I'm not gonna beat myself up over the initialization and setup of the game taking a minute. It's actually a cool effect right now -- the screen fills, line by line, with black solid characters, and then they all "turn on" at once. It's kinda cheerful. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted November 17, 2010 Author Share Posted November 17, 2010 Maze Man is proving to be quite a nicely designed game--- I have no idea who wrote it or when.... But the mystery is kind of cool. Maybe we should re-make this in our own image. 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.