Jump to content
IGNORED

Maze Man


Opry99er

Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by Opry99er
Link to comment
Share on other sites

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 by matthew180
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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". :)

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 !?

 

;)

Link to comment
Share on other sites

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. :-)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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. :).

Link to comment
Share on other sites

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 by Opry99er
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

 

 

 

 

mazetitle.jpg

This is the title screen... while we wait for the maze to be drawn. =)

 

 

 

 

mazenoenemy.jpg

This is a screen with no enemies, but you can see an arrow for you to pick up... Good to be prepared!!!!!

 

 

 

 

mazebow.jpg

Better grab the bow here as well... don't want to be without that. =)

 

 

 

 

mazewhite.jpg

Ooooooh.... a white SPRITE... spooky! Don't get anywhere NEAR this dude, or you're gonna lose arrows!!!!

 

 

 

 

mazegreenladder.jpg

The green enemy!!! Yikes... I think this dude can kill you, so watch out. =)

MAZEMAN.zip

  • Like 1
Link to comment
Share on other sites

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 by Opry99er
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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. :)

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...