-
Content Count
805 -
Joined
-
Last visited
Posts posted by InfernalKeith
-
-
I use GCHAR to keep tabs on the map data, but there's other information about each tile I'm keeping in strings.
My main time hangup right now is at the map generation part -- I still don't have it doing all that it needs to do, and we're over three minutes from hitting ENTER on RUN to seeing the finished map and being able to interact with it. That's not unheard of by 1982 standards (the "please wait" before a dungeon or map spawns) but I'm trying to be realistic about anyone actually sitting through that in 2015. Plus, I want to be able to manipulate the map and its data a lot between turns. This'll be a good way for me to get my feet wet with the compiler, and I can bless Overdrive mode while I'm testing it before it's ready to compile.

-
Now that I'm back in the habit of programming daily, I want to try sharing a project from the ground up again. This is my new game, "Conquest of the Aftermath," which I plan to have finished by December 31.
CotA is inspired by Risk, with additional elements borrowed from other games. Gameplay takes place on a map of 20x28 tiles, which are randomly distributed among four players, neutral territory, and water. Each tile has a terrain type -- in the beginning, inhospitable lands like mountains, forests and swamplands. Each tile also has a population, refugees from the war that destroyed the old cities and scattered your faithful followers across the land.
In a finite number of turns each round, players can move population, terraform the land to grow food, and attack other tiles to gain territory. Population increases and decreases depending on the amount of food, access to water and villages, and morale of the populace. Morale and food also factor into battle statistics and can give one player an advantage. Excess food can be used to bribe neutral populations to join your ranks, while shortages can lead to mutiny and the defection of populations.
Weather and natural disasters (including aftershocks from the nuclear attacks) may also play a part.
I have not yet decided the object of the game, or whether each game may be set to one of several options (total victory, biggest gains in a preset time period, or the defense of a 'home city' tile).
Right now we're REALLY early on. I'm just figuring out how to display the map and store all these variables. I'm using strings and speed is already a factor. I'm writing the code with simple, line-number-only IF-THEN statements, in anticipation that I will compile this game when it's completed.
All the program does right now is create the map and set up variables, and allow the user to browse each tile's attributes. Over the weekend I plan to puzzle out the rules for number of turns, and figure out the balance the player must strike between terraforming, cultivating and conquering.
Wish me luck! I have an idea how I want it to all come together, but there's a lot in flux right now.



-
5
-
-
Love it! I've never played the other platforms' version of this game, but you've captured the atmosphere of that mid-80's Speccy/Commodore type of game. No one who sees this would think of such games as "out of your comfort zone" at all. Great work.
-
1
-
-
Thanks Walid! It's an honor to be part of the collection.

-
1
-
-
That looks amazing, man. I want to start exploring that town. I need to get up to speed before this is ready to play and log some time with Legends and Tunnels of Doom.
-
Put me down for one of the green ones.
-

Oh, and iwantgames, this is my high score in the final version. I got lucky a few levels back and racked up a LOT of points, and then had a few levels of total disaster.

-
The final version of Dicecrash is finished and has been added to the opening post of this thread. Both the listing and the .ZIP file have been updated.
Updates from the beta:
* implemented Willsy's so-obvious-I-feel-stupid idea of making the die the "pointer," and losing the arrow
* added the final powerup, a destructive bomb that takes out a few columns of dice without awarding points
* most significantly, you can no longer "blank out" the powerups. If you don't drop them yourself, they will fall and have their effect on the dice below. The strategy then becomes using their powers to your advantage, or finding a column where dropping it does the least harm.
Barring any major bug discoveries, I'm done with this one for a good while, though I may heed the suggestion to compile it later on. My hope is to have another of my old XB ideas dusted off and finished in December.
I hope you enjoy it.
Keith
-
3
-
-
-
I'd never seen that version of Risk before. I'm gonna check it out tomorrow. The screenshots look beautiful, but lack of AI/computer opponent is a bummer.
-
Bump - removed sold items
-
Thanks Davvel! That's actually on my to-do list for 2016. (Finding someone to do it, not me doing it, unless they've released Extended BASIC for iOS.)

-
1
-
-
I'm gonna miss my deadline of finishing the game revisions to try and beat iwantgames' score on my own damn game.

-
1
-
-
Lee, you're right, and I stand ashamed.
I actually left it as "dice" because I wasn't sure how well known "die" was as the singular, and didn't know if that would cause confusion among those outside the English-speaking countries. I should have gone with the correct usage, though. I'll make sure the in-game instructions are correct.-
2
-
-
Impressive!! I have a new challenge. That's the last time I pass out strategy tips.

-
1
-
-
And thank you guys for checking it out. I realize now my comment sounded a little whiny. I know everyone's busy and I appreciate anyone taking the time to check my game out.
-
1
-
-
A strategy tip: try to build straights or full houses. If you have a row with 2-3 dice that would make a straight, like a 3 4 5, and the next dice won't complete a straight, go up to the next row with it, and start eyeballing that row for what it could potentially be. It doesn't always work, but you can usually get a good pile of straights or full houses in the bottom rows, even when things get more quick and you have fewer options at the top of the board.
-
1
-
-
Well, my high score so far is 6514. I took a few days off from it, then played some games and made notes on some minor adjustments.
It doesn't seem to have generated much interest, but if anyone has played and has any suggestions, my plan is to make the final revisions Sunday and then call it done and move on to another project.
-
That's part of the game. If you take too long to drop the dice yourself, a blank dice drops and makes it that much harder to achieve a score in that row. The time you have to drop the dice yourself decreases as the level increases.
That's in the instructions, but I don't know how clearly I explained it. I've been elbow-deep in the game for a week or two so I need some space from it before I revise them and make any fixes.
-
2
-
-
* deleted *
-
2
-
-
This is the final 1.0 release of Dicecrash, my new game for the TI 99/4A in Extended BASIC. It's a dice scoring game combining elements of Yahtzee, Tetris and Arkanoid.

In Dicecrash, you arrange falling dice into five columns and try to create winning combinations, similar to poker hands.

You must choose your column and launch each dice in a timely fashion, or else a blank dice crashes down in its place, blocking your chance to create a combo.

When the play field is full, the score is tallied, and if you meet the stated goal, you move on to the next level, a higher goal, and less time to place your dice.
As you advance, more and more power ups will appear. Some of these will enhance your score, help you clear away mistakes on the play field, or change the field in a negative way. Also, from level 3 onward, some dice will be pre-placed randomly before you start, just to add to the challenge.
Thanks for checking it out!
Keith
100 CALL CLEAR :: HIGH=0 :: RANDOMIZE :: OPTION BASE 1 110 DIM F(10,5),SNAME$(7),AMOUNT(7),PU(10),CT(3),TEMP(3) 111 RESTORE 10010 :: FOR X=96 TO 111 :: READ X$ :: CALL CHAR(X,X$) :: NEXT X :: CALL CHAR(94,"18181818FF7E3C18",45,"000000FFFF000000") 112 RESTORE 10000 :: FOR X=1 TO 7 :: READ SNAME$(X) :: NEXT X 113 MULT=1 :: SCORE=0 :: LEVEL=1 :: GOAL=500 :: CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: CALL COLOR(9,2,16,10,7,1) 114 GOSUB 20000 115 TOT=0 :: TLIM=MAX(5,16-LEVEL) :: FOR X=1 TO 10 :: FOR Y=1 TO 5 :: F(X,Y)=-1 :: NEXT Y :: NEXT X 120 DISPLAY AT(3,1):"---------" :: CALL SCOREDIS(SCORE,MULT) 122 DISPLAY AT(24,1):"DICECRASH LVL GOAL " 124 DISPLAY AT(24,14):USING "##":LEVEL; :: DISPLAY AT(24,23):USING "######":GOAL; 125 GOSUB 15000 127 IF LEVEL>2 THEN GOSUB 17000 130 PS=1 140 X=1 142 IF TOT+1=PU(X)THEN PU(X)=0 ELSE X=X+1 :: IF X<10 THEN 142 ELSE X=INT(RND*6)+1 :: GOTO 150 144 X=INT(RND*+8 :: CALL SOUND(100,1568,3) :: CALL SOUND(150,1760,3) 150 ! DISPLAY AT(1,1):CHR$(X+96); 160 T=0 165 DISPLAY AT(2,1):" " :: DISPLAY AT(2,PS+(PS-1)):CHR$(X+96); 170 CALL KEY(0,K,S) :: IF S=0 THEN T=T+1 :: IF T>TLIM THEN IF X>6 THEN 205 ELSE X=0 :: GOTO 205 180 IF K=CT(1)THEN PS=PS-1 :: IF PS=0 THEN PS=5 190 IF K=CT(2)THEN PS=PS+1 :: IF PS=6 THEN PS=1 200 IF K<>CT(3)THEN 165 205 IF F(1,PS)=-1 THEN 210 206 CALL SOUND(200,110,0,-4,0) :: IF X>0 AND X<7 THEN 165 207 PS=PS+1 :: IF PS>5 THEN PS=1 209 GOTO 205 210 DISPLAY AT(2,1):" " :: R=1 215 IF F(R,PS)=-1 THEN 220 220 IF F(R,PS)=-1 THEN DISPLAY AT((R+1)*2,PS+(PS-1)):CHR$(X+96); :: CALL FALLSOUND(R,X) :: DISPLAY AT((R+1)*2,PS+(PS-1)):" "; :: R=R+1 :: IF R<11 THEN 220 230 R=R-1 :: F(R,PS)=X :: DISPLAY AT((R+1)*2,PS+(PS-1)):CHR$(X+96); :: TOT=TOT+1 240 IF X>7 THEN GOSUB 25000 242 IF TOT<50 THEN GOTO 140 245 DISPLAY AT(2,1):"TALLYING..."; 250 ! SORTING AND SCORING 260 FOR X=1 TO 10 270 FOR Y=1 TO 5 280 FOR Z=1 TO 4 290 IF F(X,Z)>F(X,Z+1)THEN TMP=F(X,Z) :: F(X,Z)=F(X,Z+1) :: F(X,Z+1)=TMP 300 NEXT Z :: NEXT Y :: NEXT X 305 DISPLAY AT(2,1):" "; 310 FOR X=1 TO 10 312 PZ=0 315 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,1)>0 THEN PZ=1 :: GOTO 400 320 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,1)>0 THEN PZ=2 :: GOTO 400 330 IF F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,2)>0 THEN PZ=2 :: GOTO 400 340 X$="" :: FOR Y=1 TO 5 :: X$=X$&STR$(F(X,Y)) :: NEXT Y :: IF X$="12345" OR X$="23456" THEN PZ=4 :: GOTO 400 350 IF F(X,2)=F(X,3)AND F(X,3)=F(X,4)AND F(X,2)>0 THEN PZ=6 :: GOTO 400 360 IF F(X,1)=F(X,2)AND F(X,2)=F(X,3)AND F(X,1)>0 THEN IF F(X,4)=F(X,5)THEN PZ=3 :: GOTO 400 ELSE PZ=6 :: GOTO 400 370 IF F(X,3)=F(X,4)AND F(X,4)=F(X,5)AND F(X,3)>0 THEN IF F(X,1)=F(X,2)THEN PZ=3 :: GOTO 400 ELSE PZ=6 :: GOTO 400 380 IF F(X,1)=F(X,2)AND F(X,1)>0 THEN IF F(X,3)=F(X,4)OR F(X,4)=F(X,5)THEN PZ=5 :: GOTO 400 390 IF F(X,2)=F(X,3)AND F(X,2)>0 THEN IF F(X,4)=F(X,5)THEN PZ=5 400 IF PZ=0 THEN PZ=7 410 IF PZ=1 THEN TSCORE=(F(X,1)*100)*MULT 420 IF PZ=2 THEN TSCORE=(F(X,2)*50)*MULT 430 IF PZ=3 THEN TSCORE=100*MULT ELSE IF PZ=4 THEN TSCORE=60*MULT ELSE IF PZ=5 THEN TSCORE=40*MULT ELSE IF PZ=6 THEN TSCORE=20*MULT 440 DISPLAY AT((X+1)*2,12):SNAME$(PZ);" ";TSCORE 450 SCORE=SCORE+TSCORE :: TSCORE=0 460 NEXT X 470 CALL SCOREDIS(SCORE,MULT) 480 IF SCORE<GOAL THEN 530 490 DISPLAY AT(24,1):"CONGRATULATIONS! PRESS SPACE" 492 CALL SOUND(375,440,2) :: CALL SOUND(375,523,2) :: CALL SOUND(450,659,2) :: CALL SOUND(525,523,2) :: CALL SOUND(750,784,2) 493 FOR X=2 TO 30 STEP 2 :: CALL SOUND(99,784,X) :: NEXT X 500 CALL KEY(0,K,S) :: IF S=0 THEN 500 510 LEVEL=LEVEL+1 :: GOAL=GOAL+500+((LEVEL-1)*250) :: MULT=1 520 CALL CLEAR :: GOTO 115 530 DISPLAY AT(24,1):" GAME OVER... PRESS ANY KEY." 540 CALL KEY(0,K,S) :: IF S=0 THEN 540 550 IF SCORE>HIGH THEN HIGH=SCORE 560 GOTO 113 2520 GOTO 29999 10000 DATA "5 OF A KIND","4 OF A KIND","FULL HOUSE","STRAIGHT","2 PAIRS","3 OF A KIND","NONE" 10010 DATA "0000000000000000","0000001818000000","0060600000060600","1818001818001818" 10020 DATA "0066660000666600","C3C300181800C3C3","C3C300C3C300C3C3" 10030 DATA "0000000000000000","183C7EFFFF7E3C18","18183C3CC3DBDBC3","C3C324181824C3C3","FFFFC3C3C3C3C3C3" 10040 DATA "00664400003C2442","181818FFFF181818","80403E3F3F3E4080","00100810183C3C18" 15000 ! SET POWERUP FLAGS 15010 FOR X=1 TO 10 :: PU(X)=0 :: NEXT X 15020 NTRVL=50/(LEVEL+1) :: BS=50 :: FOO=MIN(10,LEVEL) 15030 FOR X=FOO TO 1 STEP-1 15040 BS=BS-NTRVL :: PU(X)=INT(BS) 15050 NEXT X 15060 RETURN 17000 ! OBSTACLES LEVEL 3+ 17010 X=INT(RND*5)+1 :: TOT,Z=MIN(10,LEVEL) 17020 FOR Y=10 TO(11-Z)STEP-1 :: W=INT(RND*7) :: CALL HCHAR((Y+1)*2,X+(X+1),W+96) :: CALL SOUND(75,-7,0) :: F(Y,X)=W :: NEXT Y 17030 RETURN 20000 CALL CLEAR :: CALL SCREEN(12) 20002 PRINT " aaaa aaaaa aaa aaaaa":" a a a a a":" a a a a aaa":" a a a a a":" aaaa aaaaa aaa aaaaa" 20004 PRINT:" aaa aaaa a aaaa a a":"a a a a a a a a":" aaaa aaaaa aaa aaaaa":"a a a a a a a a" 20005 PRINT " aaa a a a a aaaa a a" :: PRINT: : : : : : : : : : : 20006 CALL HCHAR(10,2,97) 20007 DISPLAY AT(14,4):"(C) 2015 KEITH BERGMAN" 20008 IF SFL=1 THEN 20110 20009 FOR X=1 TO 4 20010 CALL SOUND(125,220, 20020 CALL SOUND(125,262, 20030 CALL SOUND(125,330,6) 20040 CALL SOUND(125,262, 20050 CALL SOUND(125,392, 20060 CALL SOUND(125,262, 20070 CALL SOUND(125,330,6) 20080 CALL SOUND(125,392, 20090 NEXT X 20100 FOR X=0 TO 30 :: CALL SOUND(50,220,X,440,X) :: NEXT X 20110 DISPLAY AT(17,1):" 1. PLAY DICECRASH":" 2. INSTRUCTIONS":" 3. ADJUST CONTROLS":" 4. CREDITS/LICENSE":" 5. QUIT GAME" 20120 DISPLAY AT(23,1):" HIGH SCORE:";HIGH 20130 CALL KEY(0,K,S) :: IF S=0 THEN 20130 20140 IF K<49 OR K>53 THEN CALL SOUND(75,-3,0) :: GOTO 20130 20150 SFL=1 :: ON K-48 GOTO 20160,20270,20520,20180,20170 20160 CALL CLEAR :: RETURN 20170 CALL CLEAR :: PRINT "VISIT ORPHANTECH.COM" :: STOP 20180 CALL BORDER 20190 DISPLAY AT(3,1):"a DICECRASH WAS CREATED BY"; :: DISPLAY AT(4,3):"KEITH BERGMAN, NOV 2015"; 20200 DISPLAY AT(6,1):"a FREE TO DISTRIBUTE ONLINE"; :: DISPLAY AT(7,3):"AND FOR PERSONAL USE"; 20210 DISPLAY AT(9,1):"a SALE IN PHYSICAL FORMAT"; :: DISPLAY AT(10,3):"BY ANYONE BUT THE AUTHOR"; 20220 DISPLAY AT(11,3):"IS EXPRESSLY FORBIDDEN"; :: DISPLAY AT(13,1):"a THANKS TO EVERYONE ON THE"; 20230 DISPLAY AT(14,3):"ATARIAGE.COM TI FORUMS"; :: DISPLAY AT(16,1):"a VISIT ORPHANTECH.COM"; 20240 DISPLAY AT(17,3):"FOR UPDATES & OTHER GAMES"; 20245 DISPLAY AT(19,1):"a RELEASE 1.0 30 NOV 2015"; 20250 CALL KEY(0,K,S) :: IF S=0 THEN 20250 20260 GOTO 20000 20270 CALL BORDER 20280 DISPLAY AT(3,1):"a DICE ARE CRASHING TO THE"; :: DISPLAY AT(4,3):"GROUND! ARRANGE THEM AS"; :: DISPLAY AT(5,3):"THEY FALL FOR MAXIMUM"; 20290 DISPLAY AT(6,3):"POINTS TO REACH YOUR GOAL"; :: DISPLAY AT(8,1):"a TAKE TOO LONG TO PLACE"; :: DISPLAY AT(9,3):"YOUR DICE AND A BLANK WILL" 20300 DISPLAY AT(10,3):"FALL INTO ITS PLACE!"; :: DISPLAY AT(12,1):"a SCORE IS TALLIED WHEN"; :: DISPLAY AT(13,3):"THE PLAY FIELD IS FULL" 20310 DISPLAY AT(15,1):"a WATCH FOR POWER UPS..."; :: DISPLAY AT(16,3):"SOME HELP YOU, SOME DON'T"; 20320 CALL KEY(0,K,S) :: IF S=0 THEN 20320 20330 CALL BORDER 20340 DISPLAY AT(3,1):"a LEFT/RIGHT ARROWS TO MOVE"; :: DISPLAY AT(4,3):"PRESS ENTER TO DROP DICE."; 20350 DISPLAY AT(6,1):"a OR PRESS 3 AT MAIN MENU TO"; :: DISPLAY AT(7,3):"ADJUST GAME CONTROLS"; :: DISPLAY AT(10,1):"3 OF A KIND FULL HOUSE"; 20360 DISPLAY AT(11,1):"b b b c d e e e f f"; :: DISPLAY AT(12,1):"20 POINTS 100 POINTS"; 20370 DISPLAY AT(14,1):"2 PAIR 4 OF A KIND"; :: DISPLAY AT(15,1):"d d a a e f f f f b"; 20380 DISPLAY AT(16,1):"40 POINTS 50X DIE VALUE" :: DISPLAY AT(18,1):"STRAIGHT 5 OF A KIND"; 20390 DISPLAY AT(19,1):"a b c d e d d d d d"; :: DISPLAY AT(20,1):"60 POINTS 100X DIE VALUE"; 20400 CALL KEY(0,K,S) :: IF S=0 THEN 20400 20410 CALL BORDER 20420 DISPLAY AT(2,10):"POWER UPS:"; :: DISPLAY AT(4,1):"h CLEAR ROW, EARN ITS PTS"; 20430 DISPLAY AT(6,1):"i CHANGE ALL DICE IN COLUMN"; :: DISPLAY AT(7,3):"TO DICE AT THE TOP"; 20440 DISPLAY AT(9,1):"j SCORE MULTIPLIER"; 20450 DISPLAY AT(11,1):"k CLEAR A COLUMN AND"; :: DISPLAY AT(12,3):"EARN ALL ITS POINTS"; 20460 DISPLAY AT(14,1):"l SCRAMBLES TOP DICE ROW"; 20470 DISPLAY AT(16,1):"m JACKPOT - ROLL FOR BONUS"; :: DISPLAY AT(18,1):"n BLANKS TOP 5 DICE"; 20480 DISPLAY AT(20,1):"o BLOWS UP 3 COLUMNS-NO PTS"; 20490 CALL KEY(0,K,S) :: IF S=0 THEN 20490 20500 CALL BORDER :: DISPLAY AT(12,9):"GOOD LUCK!!!"; 20510 CALL KEY(0,K,S) :: IF S=0 THEN 20510 ELSE 20000 20520 CALL BORDER :: DISPLAY AT(3,7):"ADJUST CONTROLS:"; :: CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: FOR X=1 TO 3 :: TEMP(X)=0 :: NEXT X 20530 DISPLAY AT(6,7):"LEFT:_"; :: DISPLAY AT(8,6):"RIGHT:_"; :: DISPLAY AT(10,7):"DROP:_"; 20540 FOR X=6 TO 10 STEP 2 20550 DISPLAY AT(X,12)BEEP:"?"; 20560 CALL KEY(0,K,S) :: IF S=0 THEN 20560 ELSE TEMP((X-(X/2)-2))=CT((X-(X/2)-2)) :: CT((X-(X/2)-2))=K :: DISPLAY AT(X,12):" "; 20565 NEXT X :: IF CT(1)=CT(2)OR CT(2)=CT(3)OR CT(1)=CT(3)THEN CALL SOUND(75,-7,0) :: GOTO 20520 20570 DISPLAY AT(14,7):"1 SAVE AND EXIT"; :: DISPLAY AT(15,7):"2 RESTORE DEFAULTS"; :: DISPLAY AT(16,7)BEEP:"3 CANCEL AND EXIT"; 20580 CALL KEY(0,K,S) :: IF S=0 THEN 20580 20590 ON K-48 GOTO 20610,20620,20600 20600 FOR X=1 TO 3 :: CT(X)=TEMP(X) :: NEXT X 20610 GOTO 20000 20620 CT(1)=8 :: CT(2)=9 :: CT(3)=13 :: GOTO 20000 25000 ON X-7 GOTO 25010,25090,25120,25240,25290,25430,25500,25570 25010 ! CLEAR ROW + POINTS 25020 TOT=TOT-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: F(R,PS)=-1 :: GOTO 29999 25030 F(R,PS)=-1 :: R=R+1 :: FOR Z=1 TO 5 :: CALL HCHAR((R+1)*2,(Z*2)+1,104) :: CALL SOUND(100,-7,0) :: CALL HCHAR((R+1)*2,(Z*2)+1,32) 25040 IF F(R,Z)>-1 THEN SCORE=SCORE+F(R,Z) :: TOT=TOT-1 25050 F(R,Z)=-1 :: TR=R :: IF TR=1 THEN 25080 25060 IF F(TR-1,Z)=-1 THEN 25080 25070 F(TR,Z)=F(TR-1,Z) :: CALL HCHAR((TR+1)*2,(Z*2)+1,F(TR,Z)+96) :: CALL HCHAR(TR*2,(Z*2)+1,32) :: CALL SOUND(25,-3,0) :: TR=TR-1 25075 F(TR,Z)=-1 :: IF TR>1 THEN GOTO 25060 25080 NEXT Z :: CALL SCOREDIS(SCORE,MULT) :: GOTO 29999 25090 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: GOTO 29999 25100 R=R+1 :: FOR Z=R TO 10 :: F(Z,PS)=F(R,PS) :: CALL HCHAR((Z+1)*2,(PS*2)+1,105) :: CALL SOUND(100,-7,0) :: CALL HCHAR((Z+1)*2,(PS*2)+1,F(Z,PS)+96) :: NEXT Z 25110 GOTO 29999 25120 ! MULTIPLIER 25130 TOT=TOT-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: F(R,PS)=-1 25140 CALL SOUND(125,880, 25150 CALL SOUND(125,1047, 25160 CALL SOUND(125,1319,6) 25170 CALL SOUND(125,1047, 25180 CALL SOUND(125,1568, 25190 CALL SOUND(125,1047, 25200 CALL SOUND(125,1319,6) 25210 CALL SOUND(125,1568, :: FOR Z=9 TO 30 :: CALL SOUND(-100,1568,Z) :: NEXT Z 25220 MULT=MULT+1 :: IF MULT>6 THEN MULT=6 25230 CALL SCOREDIS(SCORE,MULT) :: GOTO 29999 25240 ! CLEAR COLUMN + PTS 25250 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) :: IF R=10 THEN CALL SOUND(75,-5,0) :: GOTO 29999 25260 R=R+1 :: FOR Z=R TO 10 :: TOT=TOT-1 :: SCORE=SCORE+F(Z,PS) :: F(Z,PS)=-1 :: CALL HCHAR((Z+1)*2,(PS*2)+1,107) :: CALL SOUND(100,-7,0) 25270 CALL HCHAR((Z+1)*2,(PS*2)+1,32) :: NEXT Z 25280 CALL SCOREDIS(SCORE,MULT) :: GOTO 29999 25290 ! SCRAMBLE TOP 5 DIE 25300 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) 25310 CALL SOUND(125,324,0) 25320 CALL SOUND(125,267,0) 25330 CALL SOUND(125,229,0) 25340 CALL SOUND(125,387,0) 25350 CALL SOUND(125,277,0,256,0) 25360 CALL SOUND(125,378,0,399,0) 25370 CALL SOUND(125,259,0,270,0) 25380 CALL SOUND(100,330,0,344,0) :: FOR Z=1 TO 30 :: CALL SOUND(-50,330,Z,344,Z) :: NEXT Z 25390 FOR Z=1 TO 5 :: Y=1 25400 IF F(Y,Z)=-1 THEN Y=Y+1 :: IF Y=11 THEN 25420 ELSE 25400 25410 F(Y,Z)=INT(RND*6)+1 :: CALL HCHAR((Y+1)*2,(Z*2)+1,F(Y,Z)+96) :: CALL SOUND(75,-7,0) 25420 NEXT Z :: GOTO 29999 25430 ! BONUS POINTS 25440 Y$="" :: TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) 25445 FOR Z=1 TO 3 :: IF Z=1 THEN Y=INT(RND*3)+1 ELSE Y=INT(RND*6)+1 25450 CALL HCHAR(6,17+Z,Y+48) :: CALL HCHAR(5,17+((Z*2)-1),Y+96) :: CALL SOUND(75,-7,0) :: NEXT Z 25460 DISPLAY AT(6,20):"BONUS PT"; :: FOR Z=1 TO 3 :: CALL GCHAR(6,17+Z,Y) :: Y$=Y$&STR$(Y-48) :: NEXT Z :: Y=VAL(Y$) :: SCORE=SCORE+Y 25470 CALL SCOREDIS(SCORE,MULT) 25480 CALL SOUND(500,440,0) :: CALL SOUND(500,523,0) :: CALL SOUND(750,659,0) :: CALL SOUND(1000,554,0) 25485 FOR Y=1 TO 500 :: NEXT Y 25490 FOR Y=5 TO 6 :: FOR Z=17 TO 30 :: CALL HCHAR(Y,Z,32) :: CALL SOUND(25,-7,9) :: NEXT Z :: NEXT Y :: GOTO 29999 25500 ! FIVE BLANK DICE 25510 TOT=TOT-1 :: F(R,PS)=-1 :: CALL HCHAR((R+1)*2,(PS*2)+1,32) 25520 FOR Z=1 TO 5 :: IF F(1,Z)<>-1 THEN 29999 25530 Y=1 25540 IF F(Y,Z)=-1 THEN Y=Y+1 :: IF Y=11 THEN 25560 ELSE 25540 25550 F(Y,Z)=0 :: CALL HCHAR((Y+1)*2,(Z*2)+1,96) :: FOR ZZ=185 TO 110 STEP-5 :: CALL SOUND(-50,ZZ,0) :: NEXT ZZ 25560 NEXT Z :: GOTO 29999 25570 ! BLOW UP COLUMNS 25580 COUNTY=3 :: COUNTX=R+1 :: POSX=R+1 :: POSY=PS-1 25590 IF POSY=0 THEN POSY=5 ELSE IF POSY=6 THEN POSY=1 25600 IF POSX>10 THEN POSX=10 ELSE IF POSX=0 THEN 25630 25610 CALL SOUND(200,-6,0) :: CALL HCHAR((POSX+1)*2,POSY+(POSY+1),111) :: CALL HCHAR((POSX+1)*2,POSY+(POSY+1),32) 25620 IF F(POSX,POSY)<>-1 THEN F(POSX,POSY)=-1 :: TOT=TOT-1 25630 COUNTX=COUNTX-1 :: POSX=POSX-1 :: IF COUNTX=0 THEN COUNTX=R+1 :: COUNTY=COUNTY-1 :: POSY=POSY+1 :: POSX=R+1 25640 IF COUNTY>0 THEN 25590 25650 RETURN 29999 RETURN 30000 SUB FALLSOUND(R,X) 30010 IF X=0 THEN CALL SOUND(-300,110,0,-8,0)ELSE CALL SOUND(-300,110*(11-R),0) 30020 SUBEND 30030 SUB SCOREDIS(X,Y) 30040 X$="SCORE"&RPT$(" ",6-LEN(STR$(X)))&STR$(X) 30050 DISPLAY AT(1,16)$; 30055 DISPLAY AT(23,27):"X";CHR$(Y+96); 30060 SUBEND 30070 SUB BORDER 30080 CALL CLEAR :: CALL HCHAR(1,1,96,32) :: CALL HCHAR(24,1,96,32) :: CALL VCHAR(1,1,96,24) :: CALL VCHAR(1,32,96,24) 30090 DISPLAY AT(22,1):"a b c dPRESS ANY KEY.f e d c"; 30100 SUBEND-
6
-
-

Finishing it up now...
-
I broke my new rule of not putting anything up till it was finished any more. But it's REALLY close. The game is playable now, but one of the eight "power ups" still needs coded, and I need to finish the instruction screens and tweak the scoring system. My goal is to have it up tomorrow night for everyone to check out.
-
1
-
-
I never got to do a lot with it, but my site, orphantech.com, was up a few years ago. It had some reviews and screenshots of TI games, and it was going to be an information source for my various TI programming projects.
When I found myself running out of TI time, the site went by the wayside, and I let the domain name lapse. I thought it was gone forever...
But I just randomly checked it today, and it was available again! And now it's all mine again.
This calls for a celebration... or at least a sneak preview of something I'm uploading tomorrow.



-
8
-

Dicecrash - new game in Extended BASIC
in TI-99/4A Development
Posted
I didn't do a lot of playing around with the 'adjust controls' stuff, once it worked at all I kind of ignored it. I appreciate the notes, I am jotting stuff down for an eventual update. (I may clean up the code a little, try to shrink it down a couple K, and make a small run of them on cassette for real iron, but that won't be for a while).