-
Posts
253 -
Joined
-
Last visited
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Everything posted by Bones-69
-
I tend to find myself randomly typing stuff in trying to find that super cool effect that I can use on my next game (one that I actually end up finishing that is!). I doodled this the other night out of the blue for no particular reason other than I started bashing keys.... 100 CALL CLEAR :: FOR I=64 TO 73 :: READ A$ :: CALL CHAR(I,A$,I+16,A$) :: NEXT I :: CALL MAGNIFY(4) 110 CALL COLOR(5,13,8,6,13,8,8,16,5,7,16,5) :: CALL SCREEN(12) 120 FOR I=1 TO 4 :: READ B$(I) :: B$(I)=RPT$(B$(I), :: NEXT I 130 FOR I=1 TO 4 :: READ D$(I) :: D$(I)=RPT$(D$(I), :: NEXT I 140 FOR I=14 TO 19 :: CALL HCHAR(I,3,73,28) :: NEXT I :: FOR I=1 TO 9 :: CALL HCHAR(I,3,89,28) :: NEXT I :: CALL HCHAR(13,3,88,28) 150 READ A$ :: CALL CHAR(128,A$) :: CALL SPRITE(#1,128,2,100,40) :: F=.75 160 FOR I=1 TO 32 :: F=F+.25 :: C$=SEG$(B$(1),I,28)&SEG$(B$(2),I,28)&SEG$(B$(3),I,28)&SEG$(B$(4),I,28) 170 E$=SEG$(D$(1),F,28)&SEG$(D$(2),F,28)&SEG$(D$(3),F,28)&SEG$(D$(4),F,28) :: IF F=32 THEN F=.75 180 DISPLAY AT(20,1):C$ :: DISPLAY AT(9,1):E$ 190 IF I/2=INT(I/2)THEN CALL LOCATE(#1,100,41)ELSE IF I/5=INT(I/5)THEN CALL LOCATE(#1,101,40) 200 NEXT I :: GOTO 160 210 DATA 01030F1F1F7F7FFF,010101070F0F3FFF,010303030F1F3FFF,00000000033FFFFF,00000080E0FCFFFF 220 DATA 808080E0E0F8FFFF,80E0F0FCFEFEFEFF,808080C0E0F0FCFF,FFFFFFFFFFFFFFFF,0 230 DATA IIICDIII 240 DATA IIBHHEII 250 DATA IAHHHHFI 260 DATA @HHHHHHG 270 DATA YYYSTYYY 280 DATA YYRXXUYY 290 DATA YQXXXXVY 300 DATA PXXXXXXW 310 DATA 010101010101030509117F3F1F00000000008040201008040202FFF6FC000000
-
Little XB effort.... 100 ! XBSTATIC 110 DIM A$(16) :: RANDOMIZE 120 FOR I=1 TO 16 :: READ A$(I) :: NEXT I :: FOR I=1 TO 9 :: FOR D=1 TO 16 :: B$(I)=B$(I)&A$(RND*15+1) :: NEXT D :: NEXT I 130 CALL CLEAR :: CALL COLOR(1,16,2) :: CALL SCREEN(2) 140 FOR I=1 TO 9 :: CALL COLOR(1,2,16) :: CALL CHAR(32,B$(I)) :: CALL COLOR(1,16,2) :: NEXT I :: GOTO 140 150 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
-
I think the issue here would be speed. You would have to save all your program variables, execute the XB program to display, reload the main program and then re-load the program variables.
-
7K wouldn't allow a lot of bells and whistles, but I think the concept is real exciting.
-
Well, I guess you could swap out the almost 13K VDP RAM (or just all 16K) and put in the picture, wait, then restore VDP, and continue XB and disk operations as if the bitmap display thing never took place. Forgive me - because I don't have any understanding of how this could be done (I am just an XB guy), or even if it is practical - but how long would such a process take to execute and return back to a BASIC environment? Could it be possible to create something along the lines of the way graphics were displayed in the C64 game Twin Kingdom Valley? Or is the idea just so unpractical it wouldn't be worth the effort?
-
Hey Opry - you snuck in just before me!
-
Would it be possible to store individual images to disk and then have them called and displayed from XB? I am thinking how cool this would if the images could be used in a text adventure game that was otherwise completely written in XB.
-
Bug fixed in line 23630. The girls and pimp now also change direction from time to time.... 1 ! UPDATE #18: 13/12/2010 FIXED BUG 100 ! EGG THE HOOKER 110 ! WRITTEN BY BONES 120 ! NOVEMBER 2010 130 ! 140 DIM Z$(4),X$(68),R(100),S(8,5,5) 200 CALL INIT :: CALL LOAD(-31806,16) :: CALL MAGNIFY(3) :: RANDOMIZE :: CALL CLEAR :: GOSUB 24000 210 CALL CLEAR :: FOR I=1 TO 14 :: READ A,B :: CALL COLOR(I,A,B) :: NEXT I 220 FOR I=32 TO 84 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 230 DISPLAY AT(5,:"EGG THE HOOKER" :: DISPLAY AT(8,12)BEEP:"LOADING" 240 FOR I=88 TO 143 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 250 FOR I=1 TO 100 :: R(I)=RND :: NEXT I 400 Z(1)=1 :: Z(2)=2 :: Z(3)=31 :: Z(4)=32 410 RESTORE 30370 :: FOR I=1 TO 68 :: READ X$(I) :: NEXT I :: RESTORE 30600 420 A=0 :: FOR I=1 TO 8 STEP 2 :: A=A+1 :: S(I,2,2)=A :: S(I+1,2,2)=A :: READ B,C :: S(I,3,3)=B :: S(I+1,3,3)=C 430 S(I,4,4)=2 :: S(I+1,4,4)=2 :: NEXT I :: S(8,4,4)=4 1000 CALL CLEAR :: A=1 :: B=24 :: RESTORE 30290 :: GOSUB 20000 :: GOSUB 23000 :: GOSUB 20100 1010 RESTORE 30530 :: FOR I=1 TO 8 :: READ A,B,C,D,E,F,G :: CALL SPRITE(#A,B,C,D,E,F,G) :: NEXT I 2200 GOSUB 23500 :: GOSUB 25000 :: GOSUB 25400 2210 IF W1<>0 THEN W1=W1+1 :: IF W1=5 THEN CALL CHAR(42,X$(57)) :: W1=0 2220 H2=H2+1 :: RN=RN+1 :: IF RN>100 THEN RN=1 2300 GOSUB 24400 :: GOSUB 24700 :: GOTO 2200 20000 ! DRAW GAME SCREEN 20010 CALL SCREEN(2) 20020 ! 20030 FOR I=A TO B :: READ A$ :: FOR D=1 TO 4 :: CALL HCHAR(I,Z(D),ASC(SEG$(A$,Z(D),1))) :: NEXT D 20040 DISPLAY AT(I,1):SEG$(A$,3,28) :: NEXT I :: RETURN 20100 ! UPDATE SCORES 20110 FOR I=1 TO 8 :: IF S(I,5,5)=0 THEN 20140 20120 A=S(I,4,4)-LEN(STR$(S(I,1,1))) :: B$=STR$(S(I,1,1)) :: B$=RPT$("0",A)&B$ 20130 DISPLAY AT(S(I,2,2),S(I,3,3))SIZE(S(I,4,4)):B$ :: S(I,5,5)=0 20140 NEXT I :: RETURN 22999 ! RESET VARIABLES 23000 RESTORE 31000 :: FOR I=1 TO 8 :: READ A :: S(I,1,1)=A :: S(I,5,5)=1 :: NEXT I 23010 X=100 :: Y=176 :: W1,C1,@,H2=0 :: H=1 23020 H3=(RND*300)+200 :: RETURN 23499 ! ROBOT CONTROLS 23500 CALL KEY(0,A,B) :: IF A=13 THEN 23800 ELSE IF A<8 OR A>11 THEN RETURN 23520 B=1 :: W=0 :: ON A-7 GOSUB 23600,23600,23700,23700 23540 CALL LOCATE(#1,Y,X) :: IF W=1 THEN W1=1 :: CALL CHAR(42,X$(58)) :: W=0 23550 RETURN 23600 ! HORIZONTAL CONTROL 23610 IF Y<176 AND Y>84 THEN W=1 :: RETURN 23620 IF A=8 THEN B=-1 23630 X=X+B :: IF X<1 THEN X=256 ELSE IF X>256 THEN X=1 23640 RETURN 23699 ! VERTICAL CONTROL 23700 IF Y=84 AND A=11 THEN W=1 :: RETURN 23710 IF Y=176 AND A=10 THEN W=1 :: RETURN 23720 IF A=11 THEN B=-1 23730 IF X<161 AND X>153 AND A=11 THEN Y=Y+B :: X=158 :: GOTO 23760 23740 IF X<161 AND X>153 AND A=10 THEN Y=Y+B :: X=158 :: GOTO 23760 23750 W=1 :: RETURN 23760 IF A=11 AND Y=91 THEN Y=84 ELSE IF A=10 AND Y=170 THEN Y=176 23770 RETURN 23799 ! FIRE 23800 CALL SOUND(500,500,0) :: RETURN 23999 ! SPEED SETTING 24000 PRINT "THIS GAME PLAYS BEST ON C99 USING THE CPU OVERDRIVE SETTING." 24010 PRINT :: PRINT RPT$("_",28) :: PRINT 24020 ! 24025 ! 24030 ! 24399 ! COINC CHECK 24400 RETURN 24410 ! 24420 ! 24430 ! 24699 ! HOOKER & PIMP DIRECTION CHANGE 24700 IF H2<H3 THEN RETURN 24710 IF H=1 THEN H=2 :: A=129 :: B=61 :: GOTO 24730 24720 IF H=2 THEN H=1 :: A=135 :: B=143 24730 CALL PATTERN(#8,A,#9,A,#10,B) 24740 IF H=2 THEN CALL MOTION(#10,0,-2,#9,0,-2,#8,0,-2)ELSE CALL MOTION(#8,0,2,#9,0,2,#10,0,2) 24750 H2=0 :: H3=(RND*300)+200 :: RETURN 24999 ! EFFECT EVENTS 25000 C1=C1+1 :: IF C1>991 THEN C1=1 :: RETURN 25005 IF C1/18<>INT(C1/18)THEN RETURN 25010 IF C1/108=INT(C1/108)THEN CALL CHAR(42,X$(56))! FATHER BLINK 25030 IF C1/126=INT(C1/126)THEN CALL CHAR(40,X$(52))! SON BLINK 25050 IF @=0 AND C1/18=INT(C1/18)THEN CALL CHAR(102,X$(60)) :: @=1! LIGHT OFF 25060 IF @=1 AND C1/36=INT(C1/36)THEN CALL CHAR(102,X$(59)) :: @=0! LIGHT ON 25070 IF C1/414=INT(C1/414)THEN CALL HCHAR(7,17,98,2) :: CALL HCHAR(8,17,99,2)! LEFT LIGHT RED 25080 IF C1/990=INT(C1/990)THEN CALL HCHAR(7,17,113,2) :: CALL HCHAR(8,17,112,2)! LEFT LIGHT YELLOW 25090 IF C1/612=INT(C1/612)THEN CALL HCHAR(7,24,113,2) :: CALL HCHAR(8,24,112,2)! RIGHT LIGHT YELLOW 25100 IF C1/810=INT(C1/810)THEN CALL HCHAR(7,24,98,2) :: CALL HCHAR(8,24,99,2)! RIGHT LIGHT RED 25110 IF C1/108=INT(C1/108)THEN CALL CHAR(42,X$(55))! FATHER OPEN EYES 25120 IF C1/126=INT(C1/126)THEN CALL CHAR(40,X$(51))! SON OPEN EYES 25130 RETURN 25399 ! HOOKER & PIMP ANIMATION 25400 H1=H1+1 :: IF H1=11 THEN H1=1 25410 IF H=1 THEN CALL CHAR(135,X$(H1),143,X$(H1+20)) :: RETURN 25420 CALL CHAR(129,X$(H1+10),61,X$(H1+30)) :: RETURN 30000 DATA 7,2,16,2,4,2,4,2,4,2,4,2,4,2,14,15,10,2,8,6,2,12,15,2,14,2,2,16 30010 DATA 00000000000000000000FFFFFFFFFFFF0000FFC7A3C9B3FFFFFFFFFFFFFFFFFF 30020 DATA 0000070F1F3F7FFF00000000000102040000E0F0F8FCFEFF000000007E81FFFF 30030 DATA 7C68FEFE6C303C7C00000828383060C00000003C6A7F6E303C387ADDDDEAF47C 30040 DATA 90FF90147C14101000000000F80000000000007E0000000000FF00FF00000000 30050 DATA 003E63676B73633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E 30060 DATA 00060E1E267F0606007F63607E03633E003E63607E63633E007F63060C18183C 30070 DATA 003E63633E63633E003E63633F03633E0000181800001818000000000000387F 30080 DATA 071F0B1F0E061F3B7FDB9F0F0909091B00800018242424A0E060202020202000 30090 DATA 0018181818001818001C36637F636363006E73637E63637E001E33606060331E 30100 DATA 006C76636363667C007F31303C30317F007F31303C303078001E33606763371D 30110 DATA 006363637F636363003C18181818183C001F06060606663C0066666C786C6763 30120 DATA 007830606063637E0063777F6B6363630063737B6F676363001C36636363361C 30130 DATA 006E73637E606060001C36636B67361D006E73637E6C6663003E63603E03633E 30140 DATA 007E5A181818183C007333636363763C00336363361C7870007333636B7F7763 30150 DATA AD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FE0000000000000000 30160 DATA 00000000000000000000000000000000060D0D0B060000000000000000000000 30170 DATA FFFF000000000000000000000000FFFF0000007E7E7E7E00007E7E7E7E7E7E00 30180 DATA 007E5662466A7E000810F8A8F8F80000003C1800000000000000007E5A767E00 30190 DATA 02FF202020FF020201FF212121FF010180FF848484FF808002FF7C7C7CFF0202 30200 DATA 002100084000240002D1048A248112020291347E3C9D280202F12C2E26F00202 30210 DATA FF818181818181FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FF 30220 DATA 040F1B0F0C077F535F4CA7AC073F6B3F80C060CACE84FC20E0C080C080F058F0 30230 DATA FFFF00000000FFFF041F31777377311F00FF187B4A6B08FF20F8C4DE467644F8 30240 DATA 0000001F2026273F20232038577C543800000000804020F80601011DEA3E2A1C 30250 DATA 070F0C163C1C040E1D0C07060A1266AA80C0C0C0602030100080000000000000 30260 DATA 0103030306040C080001000000000000E0F030683C382070B830E06050486655 30270 DATA 00000000000000000B0B397FFFCF48300000000000000000000004FCFCC84830 30280 DATA 00010018242424050706040404040400E0F8D0F87060F8DCFEDBF9F0909090D8 30290 DATA "HOOKERS EGGED:00 HO WHACKS:00 ","PIMP BASHINGS:00 ACCIDENTS:00 ","BULLET WOUNDS:00 EGGS LEFT:00 ," 30300 DATA "BATTERV LIFE :00 SCORE:0000 ',","$!!!!!!!!!!&$!!!!!!!!!!!!!!!&$##","hhhhhhhhhhhijhhkhhhohhhhhhhhijhh" 30310 DATA "phhhhh*%; ijgbhbbhhnmhbbkrrnjpp","phhhhh+e( ijcdhcchhhkhcchpsijpp","hhyz{hhhhhhinlhohhhXYZhhonmkijhh" 30320 DATA "ph hpphppijqqhqqhf $hrrhbgijpp","ph hpphppijppkpph $!hpphccijpp","hh hhhhhhijkhhhhh$!!hhhkhhijhh" 30330 DATA "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\","```````````````````xxx``````````"," xxx " 30340 DATA " xxx ","////////////////// xxx /////////"," xxx " 30350 DATA " . . . . . xxx . . ."," xxx "," . . . . . xxx . . ." 30360 DATA " xxx ","aaaaaaaaaaaaaaaaaaaxxxaaaaaaaaaa","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" 30369 !135 HOOKER RIGHT WALK X$(1-10) 30370 DATA B830E060DC86C5A0,B830E162DF80C0A0,B932E778C080C0A0,B830E162DF80C0A0,B830E060DC86C5A0 30380 DATA B830E06010206058,B830E06030D05894,B830A060D0901814,B830E06030D05894,B830E06010206058 30389 !129 HOOKER LEFT WALK X$(11-20) 30390 DATA 1D0C07063B61A305,1D0C8746FB010305,9D4CE71E03010305,1D0C8746FB010305,1D0C07063B61A305 30400 DATA 1D0C07060804061A,1D0C07060C0B1A29,1D0C05060B091828,1D0C07060C0B1A29,1D0C07060804061A 30409 !143 PIMP RIGHT WALK X$(21-30) 30410 DATA FEDBF9F0909090D8,FEDBF9F020B0480C,FEDBF9F0A0B24CC0,FEDBF9F2BE8040C0,FEDBF9F25E204060 30420 DATA FEDBF9F25E241C00,FEDBF9F0D8643300,FEDBF9F0D8484C60,FEDBF9F0908A84E0,FEDBF9F05088886C 30429 !61 PIMP LEFT WALK X$(31-40) 30430 DATA 7FDB9F0F0909091B,7FDB9F0F040D1230,7FDB9F0F054D3203,7FDB9F4F7D010203,7FDB9F4F7A040206 30440 DATA 7FDB9F4F7A243800,7FDB9F0F1B26CC00,7FDB9F0F1B123206,7FDB9F0F09512107,7FDB9F0F0A111136 30449 !118 ROBOT LOWER & RAISE ARM X$(41-50) 30450 DATA 80C060CACE84FC20,80C060C0C083FE23,80C060C0C086FC26,80C060C0C098F038,80C060C0C080F030 30459 !37 ANTENNA DOWN-UP X$(68) 30460 DATA 80C060C0C080F030,80C060C0C098F038,80C060C0C086FC26,80C060C0C083FE23,80C060CACE84FC20 30469 !40 SON BLINK X$(51,52) + SMILE & UNHAPPY X$(53,54) 30470 DATA 7C68FEFE6C303C7C,7C7CFEFE6C303C7C,7C68FEFE6C303C7C,7C68FEFE7C203C7C 30479 !42 FATHER BLINK X$(55,56) + SMILE & UNHAPPY X$(57,58) 30480 DATA 0000003C6A7F6E30,0000003C7E7F6E30,0000003C6A7F6E30,0000003C6A7F7E20 30489 !102 RED LIGHT ON & OFF X$(59,60) 30490 DATA 003C180000000000,0 30499 !37 ANTENNA UP-DOWN X$(61-64) 30500 DATA 0000000000010204,0000000000000204,0000000000000004,0 30510 !37 ANTENNA DOWN-UP X$(65-68) 30520 DATA 0,0000000000000004,0000000000000204,0000000000010204 30529 ! SPRITE DATA 30530 DATA 1,116,13,176,100,0,0,3,136,7,158,100,0,-12,4,136,14,158,130,0,-12,5,136,3,143,100,0,-18 30540 DATA 6,136,5,128,100,0,-5,8,132,14,84,100,0,2,9,132,14,84,70,0,2,10,140,2,84,10,0,2 30599 ! DISPLAY AT POS 30600 DATA 13,27,13,27,13,27,13,23 30999 ! INTIALIZE S(#,1,1) 31000 DATA 0,0,0,0,0,12,99,0
-
Interesting.... I can't duplicate it either. I should be able to put a failsafe in with a ">" function rather than the current "=". This should cover all bases but I am very curious where the bug comes from - been walking around forever trying to get it to crash. Thanks!
-
Game is about 75% done now. Characters are animated, robot can move around (use arrow keys) and environment has subtle changes now and then (have to look close to pick them up). Very very obvious this needs to be run in CPU Overdrive in Classic99. My machine at home (a 2.6Mhz quad core) runs it quite smoothly however another machine I have which is about 7 years old stuggles even with Overdrive enabled.... Currently it is patched together to check how things work but I should be finished in another couple of days if time allows... Still have to write the actual egg throwing routine, check for coincs and do more testing etc. It has been enjoyable writing this. I have never written anything with the intention of running with Overdrive and it opens up a whole new world I didn't know existed. 1 ! UPDATE #16: 13/12/2010 ENEMY ANIMATION 100 ! EGG THE HOOKER 110 ! WRITTEN BY BONES 120 ! NOVEMBER 2010 130 ! 140 DIM Z$(4),X$(68),R(100),S(8,5,5) 200 CALL INIT :: CALL LOAD(-31806,16) :: CALL MAGNIFY(3) :: RANDOMIZE :: CALL CLEAR :: GOSUB 24000 210 CALL CLEAR :: FOR I=1 TO 14 :: READ A,B :: CALL COLOR(I,A,B) :: NEXT I 220 FOR I=32 TO 84 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 230 DISPLAY AT(5,:"EGG THE HOOKER" :: DISPLAY AT(8,12)BEEP:"LOADING" 240 FOR I=88 TO 143 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 250 FOR I=1 TO 100 :: R(I)=RND :: NEXT I 400 Z(1)=1 :: Z(2)=2 :: Z(3)=31 :: Z(4)=32 410 RESTORE 30370 :: FOR I=1 TO 68 :: READ X$(I) :: NEXT I :: RESTORE 30600 420 A=0 :: FOR I=1 TO 8 STEP 2 :: A=A+1 :: S(I,2,2)=A :: S(I+1,2,2)=A :: READ B,C :: S(I,3,3)=B :: S(I+1,3,3)=C 430 S(I,4,4)=2 :: S(I+1,4,4)=2 :: NEXT I :: S(8,4,4)=4 1000 CALL CLEAR :: A=1 :: B=24 :: RESTORE 30290 :: GOSUB 20000 :: GOSUB 23000 :: GOSUB 20100 1010 RESTORE 30530 :: FOR I=1 TO 8 :: READ A,B,C,D,E,F,G :: CALL SPRITE(#A,B,C,D,E,F,G) :: NEXT I 2200 GOSUB 23500 :: GOSUB 25000 :: GOSUB 25400 2210 IF W1<>0 THEN W1=W1+1 :: IF W1=5 THEN CALL CHAR(42,X$(57)) :: W1=0 2220 GOSUB 24400 :: GOTO 2200 20000 ! DRAW GAME SCREEN 20010 CALL SCREEN(2) 20020 ! 20030 FOR I=A TO B :: READ A$ :: FOR D=1 TO 4 :: CALL HCHAR(I,Z(D),ASC(SEG$(A$,Z(D),1))) :: NEXT D 20040 DISPLAY AT(I,1):SEG$(A$,3,28) :: NEXT I :: RETURN 20100 ! UPDATE SCORES 20110 FOR I=1 TO 8 :: IF S(I,5,5)=0 THEN 20140 20120 A=S(I,4,4)-LEN(STR$(S(I,1,1))) :: B$=STR$(S(I,1,1)) :: B$=RPT$("0",A)&B$ 20130 DISPLAY AT(S(I,2,2),S(I,3,3))SIZE(S(I,4,4)):B$ :: S(I,5,5)=0 20140 NEXT I :: RETURN 22999 ! RESET VARIABLES 23000 RESTORE 31000 :: FOR I=1 TO 8 :: READ A :: S(I,1,1)=A :: S(I,5,5)=1 :: NEXT I 23010 X=100 :: Y=176 :: W1,C1,@=0 :: H=1 :: RETURN 23499 ! ROBOT CONTROLS 23500 CALL KEY(0,A,B) :: IF A=13 THEN 23800 ELSE IF A<8 OR A>11 THEN RETURN 23520 B=1 :: W=0 :: ON A-7 GOSUB 23600,23600,23700,23700 23540 CALL LOCATE(#1,Y,X) :: IF W=1 THEN W1=1 :: CALL CHAR(42,X$(58)) :: W=0 23550 RETURN 23600 ! HORIZONTAL CONTROL 23610 IF Y<176 AND Y>84 THEN W=1 :: RETURN 23620 IF A=8 THEN B=-1 23630 X=X+B :: IF X=0 THEN X=256 ELSE IF X=256 THEN X=1 23640 RETURN 23699 ! VERTICAL CONTROL 23700 IF Y=84 AND A=11 THEN W=1 :: RETURN 23710 IF Y=176 AND A=10 THEN W=1 :: RETURN 23720 IF A=11 THEN B=-1 23730 IF X<161 AND X>153 AND A=11 THEN Y=Y+B :: X=158 :: GOTO 23760 23740 IF X<161 AND X>153 AND A=10 THEN Y=Y+B :: X=158 :: GOTO 23760 23750 W=1 :: RETURN 23760 IF A=11 AND Y=91 THEN Y=84 ELSE IF A=10 AND Y=170 THEN Y=176 23770 RETURN 23799 ! FIRE 23800 CALL SOUND(500,500,0) :: RETURN 23999 ! SPEED SETTING 24000 PRINT "THIS GAME PLAYS BEST ON C99 USING THE CPU OVERDRIVE SETTING." 24010 PRINT :: PRINT RPT$("_",28) :: PRINT 24020 ! 24025 ! 24030 ! 24399 ! COINC CHECK 24400 RETURN 24410 ! 24420 ! 24430 ! 24999 ! EFFECT EVENTS 25000 C1=C1+1 :: IF C1>991 THEN C1=1 :: RETURN 25005 IF C1/18<>INT(C1/18)THEN RETURN 25010 IF C1/108=INT(C1/108)THEN CALL CHAR(42,X$(56))! FATHER BLINK 25030 IF C1/126=INT(C1/126)THEN CALL CHAR(40,X$(52))! SON BLINK 25050 IF @=0 AND C1/18=INT(C1/18)THEN CALL CHAR(102,X$(60)) :: @=1! LIGHT OFF 25060 IF @=1 AND C1/36=INT(C1/36)THEN CALL CHAR(102,X$(59)) :: @=0! LIGHT ON 25070 IF C1/414=INT(C1/414)THEN CALL HCHAR(7,17,98,2) :: CALL HCHAR(8,17,99,2)! LEFT LIGHT RED 25080 IF C1/990=INT(C1/990)THEN CALL HCHAR(7,17,113,2) :: CALL HCHAR(8,17,112,2)! LEFT LIGHT YELLOW 25090 IF C1/612=INT(C1/612)THEN CALL HCHAR(7,24,113,2) :: CALL HCHAR(8,24,112,2)! RIGHT LIGHT YELLOW 25100 IF C1/810=INT(C1/810)THEN CALL HCHAR(7,24,98,2) :: CALL HCHAR(8,24,99,2)! RIGHT LIGHT RED 25110 IF C1/108=INT(C1/108)THEN CALL CHAR(42,X$(55))! FATHER OPEN EYES 25120 IF C1/126=INT(C1/126)THEN CALL CHAR(40,X$(51))! SON OPEN EYES 25130 RETURN 25399 ! HOOKER & PIMP ANIMATION 25400 H1=H1+1 :: IF H1=11 THEN H1=1 25410 IF H=1 THEN CALL CHAR(135,X$(H1),143,X$(H1+20)) :: RETURN 25420 CALL CHAR(129,X$(H1+10),61,X$(H1+30)) :: RETURN 30000 DATA 7,2,16,2,4,2,4,2,4,2,4,2,4,2,14,15,10,2,8,6,2,12,15,2,14,2,2,16 30010 DATA 00000000000000000000FFFFFFFFFFFF0000FFC7A3C9B3FFFFFFFFFFFFFFFFFF 30020 DATA 0000070F1F3F7FFF00000000000102040000E0F0F8FCFEFF000000007E81FFFF 30030 DATA 7C68FEFE6C303C7C00000828383060C00000003C6A7F6E303C387ADDDDEAF47C 30040 DATA 90FF90147C14101000000000F80000000000007E0000000000FF00FF00000000 30050 DATA 003E63676B73633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E 30060 DATA 00060E1E267F0606007F63607E03633E003E63607E63633E007F63060C18183C 30070 DATA 003E63633E63633E003E63633F03633E0000181800001818000000000000387F 30080 DATA 071F0B1F0E061F3B7FDB9F0F0909091B00800018242424A0E060202020202000 30090 DATA 0018181818001818001C36637F636363006E73637E63637E001E33606060331E 30100 DATA 006C76636363667C007F31303C30317F007F31303C303078001E33606763371D 30110 DATA 006363637F636363003C18181818183C001F06060606663C0066666C786C6763 30120 DATA 007830606063637E0063777F6B6363630063737B6F676363001C36636363361C 30130 DATA 006E73637E606060001C36636B67361D006E73637E6C6663003E63603E03633E 30140 DATA 007E5A181818183C007333636363763C00336363361C7870007333636B7F7763 30150 DATA AD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FE0000000000000000 30160 DATA 00000000000000000000000000000000060D0D0B060000000000000000000000 30170 DATA FFFF000000000000000000000000FFFF0000007E7E7E7E00007E7E7E7E7E7E00 30180 DATA 007E5662466A7E000810F8A8F8F80000003C1800000000000000007E5A767E00 30190 DATA 02FF202020FF020201FF212121FF010180FF848484FF808002FF7C7C7CFF0202 30200 DATA 002100084000240002D1048A248112020291347E3C9D280202F12C2E26F00202 30210 DATA FF818181818181FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FF 30220 DATA 040F1B0F0C077F535F4CA7AC073F6B3F80C060CACE84FC20E0C080C080F058F0 30230 DATA FFFF00000000FFFF041F31777377311F00FF187B4A6B08FF20F8C4DE467644F8 30240 DATA 0000001F2026273F20232038577C543800000000804020F80601011DEA3E2A1C 30250 DATA 070F0C163C1C040E1D0C07060A1266AA80C0C0C0602030100080000000000000 30260 DATA 0103030306040C080001000000000000E0F030683C382070B830E06050486655 30270 DATA 00000000000000000B0B397FFFCF48300000000000000000000004FCFCC84830 30280 DATA 00010018242424050706040404040400E0F8D0F87060F8DCFEDBF9F0909090D8 30290 DATA "HOOKERS EGGED:00 HO WHACKS:00 ","PIMP BASHINGS:00 ACCIDENTS:00 ","BULLET WOUNDS:00 EGGS LEFT:00 ," 30300 DATA "BATTERV LIFE :00 SCORE:0000 ',","$!!!!!!!!!!&$!!!!!!!!!!!!!!!&$##","hhhhhhhhhhhijhhkhhhohhhhhhhhijhh" 30310 DATA "phhhhh*%; ijgbhbbhhnmhbbkrrnjpp","phhhhh+e( ijcdhcchhhkhcchpsijpp","hhyz{hhhhhhinlhohhhXYZhhonmkijhh" 30320 DATA "ph hpphppijqqhqqhf $hrrhbgijpp","ph hpphppijppkpph $!hpphccijpp","hh hhhhhhijkhhhhh$!!hhhkhhijhh" 30330 DATA "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\","```````````````````xxx``````````"," xxx " 30340 DATA " xxx ","////////////////// xxx /////////"," xxx " 30350 DATA " . . . . . xxx . . ."," xxx "," . . . . . xxx . . ." 30360 DATA " xxx ","aaaaaaaaaaaaaaaaaaaxxxaaaaaaaaaa","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" 30369 !135 HOOKER RIGHT WALK X$(1-10) 30370 DATA B830E060DC86C5A0,B830E162DF80C0A0,B932E778C080C0A0,B830E162DF80C0A0,B830E060DC86C5A0 30380 DATA B830E06010206058,B830E06030D05894,B830A060D0901814,B830E06030D05894,B830E06010206058 30389 !129 HOOKER LEFT WALK X$(11-20) 30390 DATA 1D0C07063B61A305,1D0C8746FB010305,9D4CE71E03010305,1D0C8746FB010305,1D0C07063B61A305 30400 DATA 1D0C07060804061A,1D0C07060C0B1A29,1D0C05060B091828,1D0C07060C0B1A29,1D0C07060804061A 30409 !143 PIMP RIGHT WALK X$(21-30) 30410 DATA FEDBF9F0909090D8,FEDBF9F020B0480C,FEDBF9F0A0B24CC0,FEDBF9F2BE8040C0,FEDBF9F25E204060 30420 DATA FEDBF9F25E241C00,FEDBF9F0D8643300,FEDBF9F0D8484C60,FEDBF9F0908A84E0,FEDBF9F05088886C 30429 !61 PIMP LEFT WALK X$(31-40) 30430 DATA 7FDB9F0F0909091B,7FDB9F0F040D1230,7FDB9F0F054D3203,7FDB9F4F7D010203,7FDB9F4F7A040206 30440 DATA 7FDB9F4F7A243800,7FDB9F0F1B26CC00,7FDB9F0F1B123206,7FDB9F0F09512107,7FDB9F0F0A111136 30449 !118 ROBOT LOWER & RAISE ARM X$(41-50) 30450 DATA 80C060CACE84FC20,80C060C0C083FE23,80C060C0C086FC26,80C060C0C098F038,80C060C0C080F030 30459 !37 ANTENNA DOWN-UP X$(68) 30460 DATA 80C060C0C080F030,80C060C0C098F038,80C060C0C086FC26,80C060C0C083FE23,80C060CACE84FC20 30469 !40 SON BLINK X$(51,52) + SMILE & UNHAPPY X$(53,54) 30470 DATA 7C68FEFE6C303C7C,7C7CFEFE6C303C7C,7C68FEFE6C303C7C,7C68FEFE7C203C7C 30479 !42 FATHER BLINK X$(55,56) + SMILE & UNHAPPY X$(57,58) 30480 DATA 0000003C6A7F6E30,0000003C7E7F6E30,0000003C6A7F6E30,0000003C6A7F7E20 30489 !102 RED LIGHT ON & OFF X$(59,60) 30490 DATA 003C180000000000,0 30499 !37 ANTENNA UP-DOWN X$(61-64) 30500 DATA 0000000000010204,0000000000000204,0000000000000004,0 30510 !37 ANTENNA DOWN-UP X$(65-68) 30520 DATA 0,0000000000000004,0000000000000204,0000000000010204 30529 ! SPRITE DATA 30530 DATA 1,116,13,176,100,0,0,3,136,7,158,100,0,-12,4,136,14,158,130,0,-12,5,136,3,143,100,0,-18 30540 DATA 6,136,5,128,100,0,-5,8,132,14,84,100,0,2,9,132,14,84,70,0,2,10,140,2,84,10,0,2 30599 ! DISPLAY AT POS 30600 DATA 13,27,13,27,13,27,13,23 30999 ! INTIALIZE S(#,1,1) 31000 DATA 0,0,0,0,0,12,99,0
-
Been struggling with my time management lately but finally put some time aside and completed my game animations. Game is not playable yet but I have been testing to see how the animation looks - all changes are done through a change in a single CHAR per sprite rather than with CALL PATTERN. I think it is pretty obvious now this will need to be run in overdrive once complete. I sort of suspected this might be the case with some of the bells and whistles I wanted to add... 100 ! EGG THE HOOKER 110 ! WRITTEN BY BONES 120 ! NOVEMBER 2010 130 ! 140 DIM Z$(4),X$(68) 200 CALL INIT :: CALL LOAD(-31806,16) :: CALL MAGNIFY(3) :: RANDOMIZE 210 CALL CLEAR :: FOR I=1 TO 14 :: READ A,B :: CALL COLOR(I,A,B) :: NEXT I 220 RESTORE 30050 :: FOR I=48 TO 84 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I :: RESTORE 30010 230 DISPLAY AT(5,:"EGG THE HOOKER" :: DISPLAY AT(8,12)BEEP:"LOADING" 240 FOR I=32 TO 143 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 400 Z(1)=1 :: Z(2)=2 :: Z(3)=31 :: Z(4)=32 410 RESTORE 30370 :: FOR I=1 TO 68 :: READ X$(I) :: NEXT I 1000 CALL CLEAR :: GOSUB 20000 1010 RESTORE 30530 :: FOR I=1 TO 8 :: READ A,B,C,D,E,F,G :: CALL SPRITE(#A,B,C,D,E,F,G) :: NEXT I 1020 A=0 1030 A=A+1 :: IF A=11 THEN A=1 1040 CALL CHAR(135,X$(A),143,X$(A+20)) :: IF A<>10 THEN 1030 1050 CALL CHAR(40,X$(52),40,X$(51),42,X$(56),42,X$(55)) :: GOTO 1030 20000 ! DRAW GAME SCREEN 20010 CALL SCREEN(2) 20020 RESTORE 30290 20030 FOR I=1 TO 24 :: READ A$ :: FOR D=1 TO 4 :: CALL HCHAR(I,Z(D),ASC(SEG$(A$,Z(D),1))) :: NEXT D 20040 DISPLAY AT(I,1):SEG$(A$,3,28) :: NEXT I :: RETURN 30000 DATA 7,2,16,2,4,2,4,2,4,2,4,2,4,2,14,15,10,2,8,6,2,12,15,2,14,2,2,16 30010 DATA 00000000000000000000FFFFFFFFFFFF0000FFC7A3C9B3FFFFFFFFFFFFFFFFFF 30020 DATA 0000070F1F3F7FFF00000000000102040000E0F0F8FCFEFF000000007E81FFFF 30030 DATA 7C68FEFE6C303C7C00000828383060C00000003C6A7F6E303C387ADDDDEAF47C 30040 DATA 90FF90147C14101000000000F80000000000007E0000000000FF00FF00000000 30050 DATA 003E63676B73633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E 30060 DATA 00060E1E267F0606007F63607E03633E003E63607E63633E007F63060C18183C 30070 DATA 003E63633E63633E003E63633F03633E0000181800001818000000000000387F 30080 DATA 071F0B1F0E061F3B7FDB9F0F0909091B00800018242424A0E060202020202000 30090 DATA 0018181818001818001C36637F636363006E73637E63637E001E33606060331E 30100 DATA 006C76636363667C007F31303C30317F007F31303C303078001E33606763371D 30110 DATA 006363637F636363003C18181818183C001F06060606663C0066666C786C6763 30120 DATA 007830606063637E0063777F6B6363630063737B6F676363001C36636363361C 30130 DATA 006E73637E606060001C36636B67361D006E73637E6C6663003E63603E03633E 30140 DATA 007E5A181818183C007333636363763C00336363361C7870007333636B7F7763 30150 DATA AD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FE0000000000000000 30160 DATA 00000000000000000000000000000000060D0D0B060000000000000000000000 30170 DATA FFFF000000000000000000000000FFFF0000007E7E7E7E00007E7E7E7E7E7E00 30180 DATA 007E5662466A7E000810F8A8F8F80000003C1800000000000000007E5A767E00 30190 DATA 02FF202020FF020201FF212121FF010180FF848484FF808002FF7C7C7CFF0202 30200 DATA 002100084000240002D1048A248112020291347E3C9D280202F12C2E26F00202 30210 DATA FF818181818181FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FF 30220 DATA 040F1B0F0C077F535F4CA7AC073F6B3F80C060CACE84FC20E0C080C080F058F0 30230 DATA FFFF00000000FFFF041F31777377311F00FF187B4A6B08FF20F8C4DE467644F8 30240 DATA 0000001F2026273F20232038577C543800000000804020F80601011DEA3E2A1C 30250 DATA 070F0C163C1C040E1D0C07060A1266AA80C0C0C0602030100080000000000000 30260 DATA 0103030306040C080001000000000000E0F030683C382070B830E06050486655 30270 DATA 00000000000000000B0B397FFFCF48300000000000000000000004FCFCC84830 30280 DATA 00010018242424050706040404040400E0F8D0F87060F8DCFEDBF9F0909090D8 30290 DATA "HOOKERS EGGED:00 HO WHACKS:00 ","PIMP BASHINGS:00 ACCIDENTS:00 ","BULLET WOUNDS:00 EGGS LEFT:00 ," 30300 DATA "BATTERV LIFE :00 SCORE:0000 ',","$!!!!!!!!!!&$!!!!!!!!!!!!!!!&$##","hhhhhhhhhhhijhhkhhhohhhhhhhhijhh" 30310 DATA "phhhhh*%; ijgbhbbhhnmhbbkrrnjpp","phhhhh+e( ijcdhcchhhkhcchpsijpp","hhyz{hhhhhhinlhohhhXYZhhonmkijhh" 30320 DATA "ph hpphppijqqhqqhf $hrrhbgijpp","ph hpphppijppkpph $!hpphccijpp","hh hhhhhhijkhhhhh$!!hhhkhhijhh" 30330 DATA "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\","```````````````````xxx``````````"," xxx " 30340 DATA " xxx ","////////////////// xxx /////////"," xxx " 30350 DATA " . . . . . xxx . . ."," xxx "," . . . . . xxx . . ." 30360 DATA " xxx ","aaaaaaaaaaaaaaaaaaaxxxaaaaaaaaaa","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" 30369 !135 HOOKER RIGHT WALK X$(1-10) 30370 DATA B830E060DC86C5A0,B830E162DF80C0A0,B932E778C080C0A0,B830E162DF80C0A0,B830E060DC86C5A0 30380 DATA B830E06010206058,B830E06030D05894,B830A060D0901814,B830E06030D05894,B830E06010206058 30389 !129 HOOKER LEFT WALK X$(11-20) 30390 DATA 1D0C07063B61A305,1D0C8746FB010305,9D4CE71E03010305,1D0C8746FB010305,1D0C07063B61A305 30400 DATA 1D0C07060804061A,1D0C07060C0B1A29,1D0C05060B091828,1D0C07060C0B1A29,1D0C07060804061A 30409 !143 PIMP RIGHT WALK X$(21-30) 30410 DATA FEDBF9F0909090D8,FEDBF9F020B0480C,FEDBF9F0A0B24CC0,FEDBF9F2BE8040C0,FEDBF9F25E204060 30420 DATA FEDBF9F25E241C00,FEDBF9F0D8643300,FEDBF9F0D8484C60,FEDBF9F0908A84E0,FEDBF9F05088886C 30429 !61 PIMP LEFT WALK X$(31-40) 30430 DATA 7FDB9F0F0909091B,7FDB9F0F040D1230,7FDB9F0F054D3203,7FDB9F4F7D010203,7FDB9F4F7A040206 30440 DATA 7FDB9F4F7A243800,7FDB9F0F1B26CC00,7FDB9F0F1B123206,7FDB9F0F09512107,7FDB9F0F0A111136 30449 !118 ROBOT LOWER & RAISE ARM X$(41-50) 30450 DATA 80C060CACE84FC20,80C060C0C083FE23,80C060C0C086FC26,80C060C0C098F038,80C060C0C080F030 30459 !37 ANTENNA DOWN-UP X$(68) 30460 DATA 80C060C0C080F030,80C060C0C098F038,80C060C0C086FC26,80C060C0C083FE23,80C060CACE84FC20 30469 !40 SON BLINK X$(51,52) + SMILE & UNHAPPY X$(53,54) 30470 DATA 7C68FEFE6C303C7C,7C7CFEFE6C303C7C,7C68FEFE6C303C7C,7C68FEFE7C203C7C 30479 !42 FATHER BLINK X$(55,56) + SMILE & UNHAPPY X$(57,58) 30480 DATA 0000003C6A7F6E30,0000003C7E7F6E30,0000003C6A7F6E30,0000003C6A7F7E20 30489 !102 RED LIGHT ON & OFF X$(59,60) 30490 DATA 003C180000000000,0 30499 !37 ANTENNA UP-DOWN X$(61-64) 30500 DATA 0000000000010204,0000000000000204,0000000000000004,0 30510 !37 ANTENNA DOWN-UP X$(65-68) 30520 DATA 0,0000000000000004,0000000000000204,0000000000010204 30529 ! SPRITE DATA 30530 DATA 1,116,13,176,100,0,0,3,136,7,158,100,0,-12,4,136,14,158,130,0,-12,5,136,3,143,100,0,-18 30540 DATA 6,136,5,128,100,0,-5,8,132,14,84,100,0,2,9,132,14,84,70,0,2,10,140,2,84,10,0,2
-
I think I have already invested too much brain time thinking about this game and have developed high hopes for it, I will therefore make it just a cool distasteful game release - rather then enter the competition with it.... I will think up some other dismal idea for the competition. It will perform differently (different speeds) on different machines, so I wouldn't design for it. Though throttling can be fun. With MESS you can set speed at 50, 100, 200, 500, 1000 percent or unlimited. I was thinking about this as well. Thought I might prompt the player to enter a speed at the start so it can be fine tuned for individual systems. It might be a variable between .1 and 1 and I will use this value in the program to increment a range of variables which will reflect a change in sprite LOCATION update values (therefore speed). 1 might be flat out running at full throttle and .1 for example would increment the variables at lesser rates. I think I can make it work, just not sure if it is worth the time and effort as I haven't played around with throttling before and I am really not sure the difference in performance amongst different systems....
-
I made some changes to the character layout and was forced to redo what I had done. Probably a good thing because I have had the chance to go back early in the piece and address a few things I was not happy about, mainly the characters between 128-143 which were in DATA statements (between quotes), and did not paste from Ti99Dir into Classic99 properly. I have juggled the character sets and now it can paste into Classic99 with no problems. This now raises an interesting option before I go much further. What are the thoughts on if I should write this with the intention of it being run under Classic99 throttling, as to opposed to my original intention which was to have it run on standard hardware? ie- The difference is I start writing with CALL LOCATE instead of CALL MOTION. I am leaning towards Classic99 Throttling but know it will be completely unplayable on standard hardware (and this would have been nice). What are the community thoughts? Here is the new Classic99 friendly code with the characters in set3 13 & 14 juggled and corrected. Paste away! 100 ! EGG THE HOOKER 110 ! WRITTEN BY BONES 120 ! NOVEMBER 2010 130 ! 140 DIM Z$(4) 200 CALL INIT :: CALL LOAD(-31806,16) :: RANDOMIZE 210 CALL CLEAR :: FOR I=1 TO 14 :: READ A,B :: CALL COLOR(I,A,B) :: NEXT I 220 RESTORE 30050 :: FOR I=48 TO 84 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I :: RESTORE 30010 230 DISPLAY AT(5,:"EGG THE HOOKER" :: DISPLAY AT(8,12)BEEP:"LOADING" 240 FOR I=32 TO 143 STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I 400 Z(1)=1 :: Z(2)=2 :: Z(3)=31 :: Z(4)=32 1000 CALL CLEAR :: GOSUB 20000 1010 GOTO 1010 20000 ! DRAW GAME SCREEN 20010 CALL SCREEN(2) 20020 RESTORE 30290 20030 FOR I=1 TO 24 :: READ A$ :: FOR D=1 TO 4 :: CALL HCHAR(I,Z(D),ASC(SEG$(A$,Z(D),1))) :: NEXT D 20040 DISPLAY AT(I,1):SEG$(A$,3,28) :: NEXT I :: RETURN 30000 DATA 7,2,16,2,4,2,4,2,4,2,4,2,4,2,14,15,10,2,8,6,2,12,15,2,14,2,2,16 30010 DATA 00000000000000000000FFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF 30020 DATA 0000070F1F3F7FFF00000000000102040000E0F0F8FCFEFF000000007E81FFFF 30030 DATA 7C68FEFE6C303C7C00000828383060C00000003C6A7F6E303C387ADDDDEAF47C 30040 DATA 90FF90147C14101000000000F80000000000007E0000000000FF00FF00000000 30050 DATA 003E63676B73633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E 30060 DATA 00060E1E267F0606007F63607E03633E003E63607E63633E007F63060C18183C 30070 DATA 003E63633E63633E003E63633F03633E0000181800001818000000000000387F 30080 DATA 071F0B1F0E061F3B7FDB9F0F0909091B00800018242424A0E060202020202000 30090 DATA 0018181818001818001C36637F636363006E73637E63637E001E33606060331E 30100 DATA 006C76636363667C007F31303C30317F007F31303C303078001E33606763371D 30110 DATA 006363637F636363003C18181818183C001F06060606663C0066666C786C6763 30120 DATA 007830606063637E0063777F6B6363630063737B6F676363001C36636363361C 30130 DATA 006E73637E606060001C36636B67361D006E73637E6C6663003E63603E03633E 30140 DATA 007E5A181818183C007333636363763C00336363361C7870007333636B7F7763 30150 DATA AD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FE0000000000000000 30160 DATA 00000000000000000000000000000000060D0D0B060000000000000000000000 30170 DATA FFFF000000000000000000000000FFFF0000007E7E7E7E00007E7E7E7E7E7E00 30180 DATA 007E5662466A7E000810F8A8F8F80000003C1800000000000000007E5A767E00 30190 DATA 02FF202020FF020201FF212121FF010180FF848484FF808002FF7C7C7CFF0202 30200 DATA 002100084000240002D1048A248112020291347E3C9D280202F12C2E26F00202 30210 DATA FF818181818181FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FF 30220 DATA 040F1B0F0C077F535F4CA7AC073F6B3F80C060CACE84FC20E0C080C080F058F0 30230 DATA FFFF00000000FFFF041F31777377311F00FF187B4A6B08FF20F8C4DE467644F8 30240 DATA 0000001F2026273F20232038577C543800000000804020F80601011DEA3E2A1C 30250 DATA 070F0C163C1C040E1D0C07060A1266AA80C0C0C0602030100080000000000000 30260 DATA 0103030306040C080001000000000000E0F030683C382070B830E06050486655 30270 DATA 00000000000000000B0B397FFFCF48300000000000000000000004FCFCC84830 30280 DATA 00010018242424050706040404040400E0F8D0F87060F8DCFEDBF9F0909090D8 30290 DATA "HOOKERS EGGED:00 HO WHACKS:00 ","PIMP BASHINGS:00 ACCIDENTS:00 ","BULLET WOUNDS:00 EGGS LEFT:00 ," 30300 DATA "BATTERV LIFE :00 SCORE:0000 ',","$!!!!!!!!!!&$!!!!!!!!!!!!!!!&$##","hhhhhhhhhhhijhhkhhhohhhhhhhhijhh" 30310 DATA "phhhhh*%; ijgbhbbhhnmhbbkrrnjpp","phhhhh+e( ijcdhcchhhkhcchpsijpp","hhyz{hhhhhhinlhohhhXYZhhonmkijhh" 30320 DATA "ph hpphppijqqhqqhf $hrrhbgijpp","ph hpphppijppkpph $!hpphccijpp","hh hhhhhhijkhhhhh$!!hhhkhhijhh" 30330 DATA "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\","```````````````````xxx``````````"," xxx " 30340 DATA " xxx ","////////////////// xxx /////////"," xxx " 30350 DATA " . . . . . xxx . . ."," xxx "," . . . . . xxx . . ." 30360 DATA " xxx ","aaaaaaaaaaaaaaaaaaaxxxaaaaaaaaaa","\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
-
Oooops! I was pretty eggsausted last night, that would eggsplain it. File is now attached. ETH-AA.zip
-
I started to write a game for the crap game comp but ended up liking the silly theme so much I am going to make a serious go of it. Game plot: You own a egg shop and live next door to a whorehouse. Sick of all the hookers, pimps and general troubles of living next door to a whorehouse, you do the only sensible thing and build a robot which is specially designed to throw eggs at hookers. You and your son hide out in the top floor of your shop and control (via remote control) a robot who follows your commands and throws eggs at the street girls. Eggs must be thrown from a safe distance and you must be careful to avoid hitting the pimps as they will attack your robot. You can only carry 6 eggs at a time and once your egg supply is depleted you must return to the egg shop for a top up. On the way to re-stock with egg ammunition your robot must avoid the busy traffic on the road, the pimps who are plenty angry that their girls smell like eggs (which of course is harmful to business), the hookers themselves who are also not to pleased about their special egg aroma and a car which repeatedly drives past doing a "drive by shooting". The game is over once the batteries in your robot run out. This condition is accelerated by collisions with cars, pimps who beat you with their pimp canes, being kicked by hookers and of course taking bullet damage from the drive by shootings. Clearly this game was aimed at the distasteful aspect of the crap game comp right from the start.... For entertainment value the environment takes damage. Eggs will splatter on walls and break windows and drive by shooters will shoot up the building leaving bullet marks etc. I have attached my current work in progress in the form of a zip file (for some reason I don't have permission to paste a .TIDisk file). The file name on the .TIDisk is ETH5. I attach this because I am hoping for some help. I tried pasting it to Classic99 but got errors and it looks like this is due to some long lines of data which drop out when pasted into C99. Not sure if there is a work around this? Any advice appreciated. The data files also contain some characters above ASCII 126 (found amongst data lines 21000 - 21210). I am not sure if these characters will be a problem importing on other emulators down the track. I note in the code below they seem to be replaced by other characters even though the original code in the program displays fine. I am a little concerned that these characters may cause problems when/if attempted to export to original hardware. I know I had troubles getting the Win994 Disk Manager to treat the data properly... Thoughts here would be appreciated. 1 ! ETH5 17/11/10 11:05 100 ! EGG THE HOOKER 110 ! WRITTEN BY BONES 120 ! NOV 2010 130 ! 140 DIM R(50),Z(4) 200 CALL CHAR(59,"0") :: CALL HCHAR(12,1,59,768) :: CALL SCREEN(5) :: FOR I=4 TO 7 :: CALL COLOR(I,4,2) :: NEXT I 210 A=64 :: B=87 :: RESTORE 19080 :: GOSUB 15000 :: DISPLAY AT(5,8)SIZE(14):"EGG;THE;HOOKER" :: DISPLAY AT(8,12)SIZE(7):"LOADING" 220 A=32 :: B=63 :: RESTORE 19000 :: GOSUB 15000 :: A=88 :: B=143 :: RESTORE 19140 :: GOSUB 15000 230 FOR I=1 TO 50 :: R(I)=RND :: NEXT I :: Z(1)=1 :: Z(2)=2 :: Z(3)=31 :: Z(4)=32 1000 CALL HCHAR(12,1,59,768) :: FOR I=1 TO 14 :: CALL COLOR(I,2,2) :: NEXT I :: A=1 :: B=24 :: GOSUB 15100 :: CALL SCREEN(2) 1010 RESTORE 18880 :: FOR I=1 TO 5 :: READ A,B :: CALL HCHAR(A,B,127) :: NEXT I :: FOR I=1 TO 14 :: READ A,B :: CALL COLOR(I,A,B) :: NEXT I 1020 GOTO 1020 14999 ! CHAR ROUTINE 15000 FOR I=A TO B STEP 4 :: READ A$ :: CALL CHAR(I,A$) :: NEXT I :: RETURN 15099 ! SCREEN DRAW ROUTINE 15100 FOR I=A TO B :: READ A$ :: FOR D=1 TO 4 :: CALL HCHAR(I,Z(D),ASC(SEG$(A$,Z(D),1))) :: NEXT D :: DISPLAY AT(I,1):SEG$(A$,3,28) 15110 NEXT I :: RETURN 18879 ! CORRECT CHAR 127 18880 DATA 5,13,5,30,10,22,11,21,12,20 18889 ! COLOR SETS 18900 DATA 7,2,15,2,4,2,4,2,4,2,4,2,4,2,16,2,9,12,8,6,2,12,9,2,14,2,14,15 18999 ! CHARACTER DATA 19000 DATA "0000001F2026273F20232038577C543800000000804020F80601011DEA3E2A1C20232038577C543800000000804020F80601011DEA3E2A1C" 19010 DATA "FFFF000000000000000000000000FFFF000000000000387F001E0C0000000000000000000000FFFF000000000000387F001E0C0000000000" 19020 DATA "0000007E00000000FFFF000000FFFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF000000FFFFFFFFFF00000000FFFFFFFF00000000FFFF" 19030 DATA "071F0B1F0E061F3B7FDB9F0F0909091B00800018242424A0E0602020202020007FDB9F0F0909091B00800018242424A0E060202020202000" 19040 DATA "003E63676B73633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E000C1C0C0C0C0C3F003E63630E38637F003E63630E63633E" 19050 DATA "00060E1E267F0606007F63607E03633E003E63607E63633E007F63060C18183C007F63607E03633E003E63607E63633E007F63060C18183C" 19060 DATA "003E63633E63633E003E63633F03633E00001818001818000000000000000000003E63633F03633E00001818001818000000000000000000" 19070 DATA "00000000000000000B0B397FFFCF48300000000000000000000004FCFCC848300B0B397FFFCF48300000000000000000000004FCFCC84830" 19080 DATA "0018181818001818001C36637F636363006E73637E63637E001E33606060331E001C36637F636363006E73637E63637E001E33606060331E" 19090 DATA "006C76636363667C007F31303C30317F007F31303C303078001E33606763371D007F31303C30317F007F31303C303078001E33606763371D" 19100 DATA "006363637F636363003C18181818183C001F06060606663C0066666C786C6763003C18181818183C001F06060606663C0066666C786C6763" 19110 DATA "007830606063637E0063777F6B6363630063737B6F676363001C36636363361C0063777F6B6363630063737B6F676363001C36636363361C" 19120 DATA "006E73637E606060001C36636B67361D006E73637E6C6663003E63603E03633E001C36636B67361D006E73637E6C6663003E63603E03633E" 19130 DATA "007E5A181818183C007333636363763C00336363361C7870007333636B7F7763007333636363763C00336363361C7870007333636B7F7763" 19140 DATA "7C68FEFE6C303C7C00000828383060C090FF90147C14101000FF00FF0000000000000828383060C090FF90147C14101000FF00FF00000000" 19150 DATA "0000001F3A3F37181E1C3D6D6F757A3E0000000080C284081020F050F0F000001E1C3D6D6F757A3E0000000080C284081020F050F0F00000" 19160 DATA "FFE0CEC8CCC8CEE0FF00E784B594F700FF073B23BB8BBB070000000000000000FF00E784B594F700FF073B23BB8BBB070000000000000000" 19170 DATA "60B0B0D060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 19180 DATA "02FF202020FF020201FF212121FF010180FF848484FF808002FF7C7C7CFF020201FF212121FF010180FF848484FF808002FF7C7C7CFF0202" 19190 DATA "002100084000240002D1048A248112020291347E3C9D280202F12C2E26F0020202D1048A248112020291347E3C9D280202F12C2E26F00202" 19200 DATA "FF818181818181FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FFFFFFFF81818181FFFFFFFF81FFFF81FFFF81A99DB99581FF" 19210 DATA "0103065373213F0407030103010F1A0F20F0D8F030E0FECAFA32E535E0FCD6FC07030103010F1A0F20F0D8F030E0FECAFA32E535E0FCD6FC" 19220 DATA "000000007E81FFFF0000007E7E7E7E00007E7E7E7E7E7E00FFFFFFFFFFFFFFFF0000007E7E7E7E00007E7E7E7E7E7E00FFFFFFFFFFFFFFFF" 19230 DATA "007E5662466A7E000000FFFFFFFFFFFF0000E0F0F8FCFEFF0000070F1F3F7FFF0000FFFFFFFFFFFF0000E0F0F8FCFEFF0000070F1F3F7FFF" 19240 DATA "070F0C163C1C040E1D0C07060A1266AA80C0C0C06020301000800000000000001D0C07060A1266AA80C0C0C0602030100080000000000000" 19250 DATA "0103030306040C080001000000000000E0F030683C382070B830E060504866550001000000000000E0F030683C382070B830E06050486655" 19260 DATA "0000000000000000AD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FEAD7FC65ED25AC27F5AFF8DB58DADB4FFB5FEE3EEE3FA23FE" 19270 DATA "00010018242424050706040404040400E0F8D0F87060F8DCFEDBF9F0909090D80706040404040400E0F8D0F87060F8DCFEDBF9F0909090D8" 20999 ! GAME SCREEN 21000 DATA "HOOKERS;EGGED:00;;HO;WHACKS:00;;","PIMP;BASHINGS:00;;ACCIDENTS:00;;","BULLET;WOUNDS:00;;EGGS;LEFT:00;Z" 21030 DATA "BATTERV;LIFE;:00;;SCORE:0000;;xZ","}}}}}}}}}}}~.}}}}}}}}}}}}}}}~.{{","hhhhhhhhhhhijhhkhhhohhhhhhhhijhh" 21060 DATA "phhhhh\^&;;ijyyhyyhhnmhyykqqnjpp","phhhhh]_XY;ij|zhzzhhhkhzzhpsijpp","hh`abhhhhhhinlhohhh‰Š‹hhonmhijhh" 21090 DATA "ph;;;hpphppijqqhqqh';.hrrhyyijpp","ph;;;hpphppijppkpph;.}hpphzzijpp","hh;;;hhhhhhijkhhhhh.}}hhhkhhijhh" 21120 DATA "ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ","$$$$$$$$$$$$$$$$$$$*+*$$$$$$$$$$",";;;;;;;;;;;;;;;;;;));;;;;;;;;;" 21150 DATA ";;;;;;;;;;;;;;;;;;));;;;;;;;;;","[[[[[[[[[[[[[[[[[[));[[[[[[[[[",";;;;;;;;;;;;;;;;;;));;;;;;;;;;" 21180 DATA ";(;;;(;;;(;;;(;;;());(;;;(;;;(",";;;;;;;;;;;;;;;;;;));;;;;;;;;;",";(;;;(;;;(;;;(;;;());(;;;(;;;(" 21210 DATA ";;;;;;;;;;;;;;;;;;));;;;;;;;;;","%%%%%%%%%%%%%%%%%%%+*+%%%%%%%%%%","ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ" ETH-AA.zip
-
Here is something interesting I found while experimenting in BASIC & XB. Given that I only write in XB, I have always been aware that there are speed advantages in producing random numbers in advance for programs. I usually do this as part of the initialisation in order to keep as much of the time consuming stuff outside of the actual program and then just call random numbers from arrays when required. So I did the following test with the intention of measuring the actual advantage in BASIC and I was incredibly surprised there was ZERO advantage in doing the hard work first! In XB I can pick up a speed increase of 50% between the two routines below, but in BASIC it makes no difference whatsoever. If anybody has any theories here as to what is going I would love to know! The real question is not why there are differences between the two routines in XB (I think this is obvious, producing random numbers is slower than calling a known value), but what is going on in BASIC to produce identical results in the two routines? Bugger... All my little tricks that work in XB don't work in BASIC! 100 RANDOMIZE 110 INPUT "PRESS ENTER":A$ 120 A=A+1 130 PRINT RND 140 IF A=100 THEN 160 150 GOTO 120 160 PRINT "TAKES 20 SECONDS IN BASIC AND 16 SECONDS IN XB" 170 DIM B(100) 180 A=0 190 A=A+1 200 B(A)=RND 210 IF A=100 THEN 230 220 GOTO 190 230 A=0 240 INPUT "PRESS ENTER TO RE-TEST":A$ 250 A=A+1 260 PRINT B(A) 270 IF A=100 THEN 290 280 GOTO 250 290 PRINT "TAKES 20 SECONDS IN BASIC AND 10 SECONDS IN XB"
-
I am not sure I want to live in a world where you can't IF A=1 THEN CALL SOUND (100,110,0) ELSE IF A=20 THEN CALL HCHAR(1,1,128,1) ELSE IF A=1000 THEN PRINT "I forgot how much BASIC sucked!"
-
Consider it already Photoshopped!
-
Ohhh... You mean BASIC? Real BASIC. Wow, I haven't done an ounce of BASIC since I discovered XB in the early 80's. OK - Standard TI BASIC it is!
-
I am interested in this comp. Just for clarification... I understand it needs to be less than 14K. However, can we still take use of CALL LOAD which would normally require the expansion? I think we should... I don't consider this taking anything away from the romance or goal of this comp.
-
So who's working on their crap game? I spent a few hours tonight putting my idea into practice....
-
Here is my collection. Will be interesting to see if there is stuff long time TI'er haven't seen before....
-
I remember in the day as a bum-fluff teen boy being able to tell from the sound of a loading cassette if it was protected or not. There was a distinct "stutter" sound right at the very start or right at the very end of the program. (I think it was at the start) I was once able to list a protected program by messing with the fast forward/rewind/pause buttons while loading. It took a few goes (usually just ending in data errors), but when it did work you could list most of the program. There was always some corruption though with strange coloured characters mixed amongst the LISTing. Heh.. The things you do when memory expansion was equivalent to 6 months weekend part time work.
-
I have about 30 TI books but never even seen that second one!
-
In the normal unprotected state the value of -31931 is zero. I suppose if there was a command line in the program which was CALL LOAD(-31931,128) it would protect the program only after the first time this line was encountered, but prior to this no protection would exist. Would be a strange way to do things but it should work….
