Jump to content
IGNORED

Honeycomb Rapture (RGPC)


Opry99er

Recommended Posts

Then we could use the position of the airplane to determine drop timing as it passes across the screen.... That would eliminate alot of the "memory-expensive" functions.... That's pretty cool.... I'll work on the new parameters as soon as I get done playing in the flowerbed. 8)

Link to comment
Share on other sites

If the killer bees and DDT just moves in the own corridors, it doesn’t matter what position. If you had like 6 DDT predefined corridors, they could all fall at the same time, they just have to stay in they own corridors. Then when there’s a coincidence, the players x position will determine which single DDT to check for.

 

If you have 6 fixed DDT x positions like 20, 60, 100, 140, 180 and 220. Let’s say that’s sprite no. 11, 12, 13, 14, 15 and 16. You’re having a collision. The player is at x position 102, then it should be obvious, that you should only check further between player and DDT fixed at x position 100. So clever calculations could go from player x position to sprite no. Something like spr.no. = (x+20)/40+10.

 

:|

 

 

Excellent idea! You can keep the CALL COINC(ALL,C) and if 2 sprites collide you use your calculation.

I think this should be really fast and a lot more reliable then my CALL DISTANCE usage. Very good :thumbsup: :thumbsup: :thumbsup:

Link to comment
Share on other sites

I noticed something: The player's bee is able to wrap around from the right hand side of the screen to the left. If this was not what you intended, you may want to add this:

 

291 IF YPOS>240 THEN CALL LOCATE(#1,XPOS,240)

Link to comment
Share on other sites

Yes-- it was intended. It is kind of a crappy trick... Makes it harder to win.... You could accidentally go all the way off the screen, and then have to go all the way back to the right to reach the Honeycomb (which is not on the playscreen just yet). :)

 

LOL, okay. I get it. (Abraham Simpson voice)You're eeeevil! EEEEEEEVIIIIILL! ^_^

Link to comment
Share on other sites

Flower bed hex. :) just about done with it all. Haven't been anywhere near a TI or a laptop in a week. All iPhone posts. So, here's the hex for the flowerbed..... I'll implement these values into my string for use in SEG$ tomorrow.

 

FTL$--"0000001E1F1F1F0F"

FT$--"173C3C7E7E3C18BD"

FTR$--"00000078F8F8F8F0"

FL$--"01187DFFFF7D1801"

FC$--"3C4EBFFFFFFF7E3C"

FR$--"8018BEFFFFBE1880

FBL$--"0F1F1F1F1E"

FB$--"BD183C7E7E3C3C18"

FBR$--"F0F8F8F878"

ST$--"1818181818181828"

 

I'll need 3 character sets for this graphic, and I am going to try the following color combinations out to see what feels best/looks best.::

 

*petals---(16,1), center---(9,16)

*petals---(7,1), center---(5,7)

*petals---(5,1), center---(15,5)

 

the stem (ST$) will always be (13,1)

 

doing development work on an iPhone with a torn up XB manual and graphing paper sucks....

Edited by Opry99er
Link to comment
Share on other sites

Looks like I'll be limited on this one... I need to find a way to use some character sets in my graphics that won't affect my numbers and letters (caps) I can use set #8 as one of my sets, I can also use set #2... Beyond that, though... I'm struggling for sets to color up. I had thought about making the stem black, in which case I could simply use CHR$(58, 59, or 60). If I do that, it makes my job easier... but I still haven't figured the honeycomb graphic into this thing.... should get interesting. I might have to call the screen (light yellow), change my canola fields to be dark yellow showing through to the screen color (light yellow) and then manually "paint" the sky cyan (8)... This would free up my highest set for honeycomb graphics.... I don't know. Anyway, I won't be able to make any further progress in code until I get home on Sunday. For now, I'm just doing some preliminary figuring on how I'm going to make it all work, once I can get to an emulator. =)

Edited by Opry99er
Link to comment
Share on other sites

Home from the road! Good to be here, and good to get started on working on "Honeycomb" again. I have had several excellent suggestions on how to modify and streamline the code to make it more playable, and I have taken and used many of these suggestions. Now, it's time to get down to the last 6-10 hours of work. Graphics, music, and completing the game loop along with modifying the collision detection are on my agenda right now. Today will be a busy day, as will tomorrow. If this game is to be completed by the deadline, then now's the time to get crackin'! So--- that being said.... Here is the agenda.

 

1) complete and implement flowerbed graphics

2) complete and implement honeycomb graphics

3) complete, convert, and implement gameplay music

4) tighten up collision detection

5) create the "boss" stage (which is really just inside the honeycomb--- aliens, ray beams, etc.... should be fun)

6) merge all the pieces together and thoroughlly test game

 

Boom... that's it. So--- time to get crackin!

Link to comment
Share on other sites

Well... I've gotten as far as I'm gonna get tonight. Tomorrow holds many new adventures. In the following code, the flowers are drawn (for the most part) but the color limitations hurt the look. I thought if I drew the canola field first, that any character placed OVER the canola field with a background of transparent (1) would just display the canola field in the background... Nope, it displays the screen color... cyan(8) <--eight... for the emoticon editor. =) Anyway, I'll have to re-think this. I could easily make yellow the background and paint the sky cyan, but that would negate the texture of the canola field... it would just be yellow. This isn't a bad thing, necessarily, as it will allow me an extra character set for my honeycomb. We shall have to see. As of now, it's all yellow.

 

I removed the DDT detection and drop sequence as well as all COINC detection just for this particular chunk of code... since I'm re-creating it anyway, I just saved this modified program as "BEEGAMEX" versus "BEEGAME". Feel free to make any suggestions you'd like. I copied this directly out of TI99Dir, so it should work fine in a copy and paste into XB.

 

 

 

100 CALL CLEAR :: CALL SCREEN(2)

110 CALL CHAR(97,"FFFFFFFFFFFFFFFF")

120 CALL CHAR(98,"0103070F1F3F7FFF")

130 CALL CHAR(99,"80C0E0F0F8FCFEFF")

140 CALL CHAR(100,"FFFEFCF8F0E0C080")

150 CALL CHAR(101,"FF7F3F1F0F070301")

160 CALL CHAR(102,"E7C381000081C3E7")

170 CALL CHAR(103,"0081C3E7E7FFFFFF")

180 CALL CHAR(104,"FF7E3C18")

190 CALL CHAR(108,"000000783C1E4FE7E7FDFF03070F1E3C0000000000000181F15DF9C181000000")

200 CALL HCHAR(9,13,97,19) :: CALL VCHAR(3,3,97,7) :: CALL VCHAR(3,6,97,7) :: CALL VCHAR(3,29,97,6) :: CALL HCHAR(6,4,97,2)

210 CALL HCHAR(6,10,97,2) :: CALL VCHAR(5,13,97,4) :: CALL HCHAR(5,8,97) :: CALL VCHAR(6,7,97) :: CALL VCHAR(7,8,97) :: CALL VCHAR(6,9,97)

220 CALL HCHAR(7,10,97) :: CALL HCHAR(5,11,97) :: CALL HCHAR(5,14,97) :: CALL HCHAR(7,14,97) :: CALL VCHAR(6,17,97,3)

230 CALL VCHAR(6,25,97,2) :: CALL VCHAR(6,27,97,2) :: CALL HCHAR(7,30,97,2) :: CALL HCHAR(8,31,97) :: CALL HCHAR(4,15,97) :: CALL HCHAR(4,19,97)

240 CALL VCHAR(5,23,97)

250 CALL HCHAR(5,16,97) :: CALL HCHAR(5,18,97) :: CALL HCHAR(6,20,97) :: CALL HCHAR(5,21,97) :: CALL HCHAR(7,21,97) :: CALL HCHAR(7,23,97) ::

260 CALL HCHAR(7,23,97) :: CALL HCHAR(9,23,97) :: CALL HCHAR(6,22,97) :: CALL HCHAR(6,24,97)

270 REM **RAPTURE** CALL HCHAR(11,3,97,4)::

280 CALL HCHAR(11,3,97,4) :: CALL VCHAR(12,3,97,5) :: CALL VCHAR(13,7,97,3) :: CALL VCHAR(13,9,97,5) :: CALL VCHAR(12,8,97)

290 CALL VCHAR(14,8,97) :: CALL VCHAR(12,5,97) :: CALL VCHAR(13,4,97,2) :: CALL VCHAR(15,5,97) :: CALL VCHAR(16,6,97) :: CALL VCHAR(11,11,97,6)

300 CALL HCHAR(11,12,97,2) :: CALL HCHAR(12,13,97,2) :: CALL HCHAR(13,12,97,2) :: CALL HCHAR(11,15,97,5) :: CALL VCHAR(12,17,97,5)

310 CALL VCHAR(11,20,97,5) :: CALL VCHAR(11,22,97,5) :: CALL VCHAR(16,21,97) :: CALL HCHAR(11,24,97,4) :: CALL VCHAR(12,24,97,5)

320 CALL VCHAR(14,25,97) :: CALL VCHAR(11,29,97,6) :: CALL HCHAR(11,30,97,2) :: CALL VCHAR(13,30,97) :: CALL HCHAR(16,30,97,2)

330 CALL VCHAR(12,26,97) :: CALL VCHAR(13,25,97)

340 CALL VCHAR(15,26,97) :: CALL VCHAR(16,27,97)

350 CALL VCHAR(5,7,98) :: CALL VCHAR(4,18,98) :: CALL VCHAR(12,4,98) :: CALL VCHAR(12,25,98) :: CALL VCHAR(12,7,98) :: CALL VCHAR(9,2,98)

360 CALL VCHAR(9,5,98) :: CALL VCHAR(16,2,98) :: CALL VCHAR(16,10,98) :: CALL VCHAR(16,16,98)

370 CALL VCHAR(16,23,98) :: CALL VCHAR(5,20,98) :: CALL VCHAR(5,22,98) :: CALL VCHAR(5,27,98)

380 CALL VCHAR(9,4,99) :: CALL VCHAR(9,7,99) :: CALL VCHAR(5,9,99) :: CALL VCHAR(5,10,99) :: CALL VCHAR(4,16,99)

390 CALL VCHAR(5,25,99) :: CALL VCHAR(5,24,99) :: CALL VCHAR(16,4,99) :: CALL VCHAR(16,7,99) :: CALL VCHAR(12,9,99)

400 CALL VCHAR(15,6,99) :: CALL VCHAR(14,5,99) :: CALL VCHAR(16,25,99) :: CALL VCHAR(16,28,99) :: CALL VCHAR(15,27,99) :: CALL VCHAR(14,26,99)

410 CALL VCHAR(16,12,99) :: CALL VCHAR(16,18,99) :: CALL VCHAR(11,14,99)

420 CALL VCHAR(3,4,100) :: CALL VCHAR(3,7,100) :: CALL VCHAR(7,9,100) :: CALL VCHAR(5,19,100) :: CALL VCHAR(6,18,100) :: CALL VCHAR(7,24,100)

430 CALL VCHAR(11,7,100) :: CALL VCHAR(12,6,100) :: CALL VCHAR(13,5,100) :: CALL VCHAR(13,14,100) :: CALL VCHAR(12,15,100)

440 CALL VCHAR(16,22,100) :: CALL VCHAR(13,26,100) :: CALL VCHAR(12,27,100) :: CALL VCHAR(11,28,100)

450 CALL VCHAR(3,2,101) :: CALL VCHAR(3,5,101) :: CALL VCHAR(7,7,101) :: CALL VCHAR(7,11,101) :: CALL VCHAR(5,15,101) :: CALL VCHAR(6,16,101)

460 CALL VCHAR(7,20,101) :: CALL VCHAR(7,22,101) :: CALL VCHAR(11,2,101) :: CALL VCHAR(15,4,101) :: CALL VCHAR(16,5,101) :: CALL VCHAR(11,10,101)

470 CALL VCHAR(12,19,101) :: CALL VCHAR(16,20,101) :: CALL VCHAR(11,23,101) :: CALL VCHAR(15,25,101) :: CALL VCHAR(16,26,101)

480 CALL VCHAR(6,8,102) :: CALL VCHAR(6,23,102)

490 CALL VCHAR(5,17,103) :: CALL VCHAR(6,26,103) :: CALL VCHAR(7,26,104)

500 DISPLAY AT(20,9):"PRESS ANY KEY TO" :: DISPLAY AT(21,13):"CONTINUE"

510 CALL SCREEN(11)

520 CALL SPRITE(#2,108,2,150,10,0,15) :: CALL MAGNIFY(3)

530 FOR I=9 TO 12 :: CALL COLOR(I,2,1) :: NEXT I

540 CALL KEY(0,K,S) :: IF S=0 THEN 540 :: IF K>-1 THEN GOTO 550

550 CALL CLEAR :: CALL SCREEN(2) :: CALL CHARSET :: CALL DELSPRITE(ALL)

560 REM **INIT VARIABLES**

570 Q=3 :: LEV=1 :: DSPD=10 :: Z=10 :: ZX=8 :: D=6

580 REM ** INIT CUSTOM CHARACTERS **

590 FTL$="0000001E1F1F1F0F"

600 FT$="173C3C7E7E3C18BD"

610 FTR$="00000078F8F8F8F0"

620 FL$="01187DFFFF7D1801"

630 FC$="3C4EBEFFFFFF7E3C"

635 FR$="8018BEFFFFBE1880"

640 FBL$="0F1F1F1F1E"

650 FB$="BD183C7E7E3C3C18"

660 FBR$="F0F8F8F878"

670 ST$="1818181818181818"

680 CALL CHAR(58,ST$,88,FTL$,89,FT$,90,FTR$,91,FL$,92,FR$,93,FBL$,94,FB$,95,FBR$,40,FC$)

685 CALL CHAR(136,"FFFFFFFFFFFFFFFF")

690 A$=CHR$(88)&CHR$(89)&CHR$(90)&CHR$(58) :: B$=CHR$(91)&CHR$(40)&CHR$(92)&CHR$(58)

700 C$=CHR$(93)&CHR$(94)&CHR$(95)&CHR$(58)

710 FOR R=0 TO 1 :: FOR C=0 TO 5

720 DISPLAY AT(R*3+19,C*4-R*2+5):SEG$(A$,1,3+R);

730 DISPLAY AT(R*3+20,C*4-R*2+5):SEG$(B$,1,3+R);

740 DISPLAY AT(R*3+21,C*4-R*2+5):SEG$(C$,1,3+R);

750 NEXT C :: NEXT R

760 RESTORE 1150

770 FOR SP=96 TO 132 STEP 4 :: READ SP$ :: CALL CHAR(SP,SP$) :: NEXT SP

800 CALL COLOR(14,8,8) :: CALL COLOR(8,16,1) :: CALL COLOR(2,9,16) :: CALL SCREEN(11)

810 CALL SPRITE(#1,100,2,170,5) :: CALL SPRITE(#2,112,7,99,150,0,-15)

820 CALL SPRITE(#4,112,7,75,125,0,-15)

830 CALL SPRITE(#3,96,2,10,5,0,20)

840 CALL MAGNIFY(3)

850 DISPLAY AT(3,20):Q

860 DISPLAY AT(1,16):"LEVEL" :: DISPLAY AT(1,21):LEV

870 CALL POSITION(#1,XPOS,YPOS)

880 IF XPOS>185 THEN GOSUB 1110

890 IF YPOS<10 THEN GOSUB 1130

900 IF XPOS<58 THEN GOSUB 1120

910 CALL JOYST(1,X,Y)

920 CALL KEY(1,KKK,SSS) :: IF KKK=18 THEN FG=1

930 CALL MOTION(#1,-Y*2.5,X*2.5)

940 CALL PATTERN(#1,Y*3+X+116)

945 CALL COINC(ALL,C):: IF C=-1 THEN GOTO 960

950 GOTO 870

960 REM ** SPIN BEE & FLASH SCREEN **

970 CALL DELSPRITE(ALL) :: CALL SPRITE(#1,100,2,90,120) :: CALL MOTION(#1,0,0) :: RESTORE 1270

980 FOR DEAD=1 TO 8

990 READ SPIN :: CALL PATTERN(#1,SPIN)

1000 CALL SCREEN(7) :: FOR DELAY=1 TO 10 :: NEXT DELAY

1010 READ SPIN :: CALL PATTERN(#1,SPIN)

1020 CALL SCREEN(8) :: FOR DELAY=1 TO 10 :: NEXT DELAY

1030 NEXT DEAD

1040 Q=Q-1 :: IF Q<0 THEN GOTO 1080

1050 CALL SCREEN(7) :: DISPLAY AT(6,6):" YOU LOST A BEE!! " :: FOR X=1 TO 400 :: NEXT X

1060 CALL CLEAR :: CALL CHARSET :: CALL SCREEN(2) :: DISPLAY AT(7,10):"GET READY" :: CALL SCREEN(7) :: FOR X=1 TO 400 :: NEXT X

1070 GOTO 800

1080 CALL CLEAR

1090 FOR L=1 TO 16

1100 FOR X=1 TO 30 :: NEXT X :: PRINT "GAME OVER" :: CALL SCREEN(L) :: NEXT L :: GOTO 550

1110 CALL LOCATE(#1,185,YPOS) :: RETURN

1120 CALL LOCATE(#1,58,YPOS) :: RETURN

1130 CALL LOCATE(#1,XPOS,10) :: RETURN

1140 REM ** CHARACTER INIT DATA **

1150 DATA "000000783C1E4FE7E7FDFF03070F1E3C0000000000000181F15DF9C181000000"

1160 DATA "0F7840404140406221281452AC1308108080C82410884427118101030282FE00"

1170 DATA "31488780874023100B040100010204048C12E101E102C408F020800080402020"

1180 DATA "01011324081122E4888180C040417F00F01E0202820202468414284A35C81008"

1190 DATA "0000000001C221151521C301000000001C22418102145455555414028141221C"

1200 DATA "040402010001040B102340878087483120204080008020D008C402E101E1128C"

1210 DATA "3844828140282AAAAA2A2840818244380000000080C384A8A884438000000000"

1220 DATA "100813AC52142821624040414040780F00FE8202030181112744881024C88080"

1230 DATA "040402010001040B102340878087483120204080008020D008C402E101E1128C"

1240 DATA "007F4140C0808188E4221108241301010810C8354A2814844602028202021EF0"

1260 REM ** SPRITE SPIN DATA **

1270 DATA 120,108,104,100,112,124,128,132

1280 DATA 120,108,104,100,112,124,128,132

 

1370 RETURN

Edited by Opry99er
Link to comment
Share on other sites

By the way, can anyone get a screenshot of this for me? My capture program needs some stupid update and won't work at this time. =) Thanks

 

By the way, I've edited the ABOVE post about 30 times... keep seeing crap I want to change. So if you tried it and it didn't work, try again---- I have not tested the above version, as it has been modified a few times right here, and never tested for bugs. =)It will NOT allow me to attach the program file out of Classic99 for some dumb reason... I can't figure it. Anyway, that's it. I'm off to bed. Gracias

 

Oh, I've just noticed, line 1060 looks like this

 

1060 CALL CLEAR :: CALL CHARSET :: CALL SCREEN(2) :: DISPLAY AT(7,10):"GET READY" :: CALL SCREEN(7) :: FOR X=1 TO 400 :: NEXT X

 

The call clear and call charset are unnecessary. Copy and paste the following over your code:::

 

<<snip>>

 

1060 FOR I=1 TO 14 :: CALL COLOR(I,2,2):: NEXT I :: DISPLAY AT(7,10):"GET READY" :: CALL SCREEN(7) :: FOR X=1 TO 400 :: NEXT X

1065 DISPLAY AT(6,6):" " :: DISPLAY AT(7,10):" "

 

<<snip>>

 

And for some strange reason, Ti99Dir added spaces after my ")" mark, so unfortunately a couple of lines are too long and don't copy well. Should only be a couple of lines, all in the "title screen" section... Just erase the spaces in the longest of the lines, and all will be well. Sorry for the inconvenience.

Edited by Opry99er
Link to comment
Share on other sites

Here's the newest code update. With the time extension, I decided to take out some of the game elements I was not happy with and rewrite them. This is a stripped down code but you can see the initial scoring engine work, there are sound effects when you get killed, and when you touch the "honeycomb" which (as of right now) is just a red asterisk with a white background. When you touch the honeycomb 5 times, the program execution stops. this is the "boss stage" which I have not merged into this program yet. Hope you enjoy.

 

100 CALL INIT

110 CALL CLEAR :: CALL SCREEN(2)

120 CALL CHAR(97,"FFFFFFFFFFFFFFFF")

130 CALL CHAR(98,"0103070F1F3F7FFF")

140 CALL CHAR(99,"80C0E0F0F8FCFEFF")

150 CALL CHAR(100,"FFFEFCF8F0E0C080")

160 CALL CHAR(101,"FF7F3F1F0F070301")

170 CALL CHAR(102,"E7C381000081C3E7")

180 CALL CHAR(103,"0081C3E7E7FFFFFF")

190 CALL CHAR(104,"FF7E3C18")

200 CALL CHAR(108,"000000783C1E4FE7E7FDFF03070F1E3C0000000000000181F15DF9C181000000")

210 CALL HCHAR(9,13,97,19) :: CALL VCHAR(3,3,97,7) :: CALL VCHAR(3,6,97,7) :: CALL VCHAR(3,29,97,6) :: CALL HCHAR(6,4,97,2)

220 CALL HCHAR(6,10,97,2) :: CALL VCHAR(5,13,97,4) :: CALL HCHAR(5,8,97) :: CALL VCHAR(6,7,97) :: CALL VCHAR(7,8,97) :: CALL VCHAR(6,9,97)

230 CALL HCHAR(7,10,97) :: CALL HCHAR(5,11,97) :: CALL HCHAR(5,14,97) :: CALL HCHAR(7,14,97) :: CALL VCHAR(6,17,97,3)

240 CALL VCHAR(6,25,97,2):: CALL VCHAR(6,27,97,2):: CALL HCHAR(7,30,97,2):: CALL HCHAR(8,31,97):: CALL HCHAR(4,15,97):: CALL HCHAR(4,19,97)

250 CALL VCHAR(5,23,97)

260 CALL HCHAR(5,16,97):: CALL HCHAR(5,18,97):: CALL HCHAR(6,20,97):: CALL HCHAR(5,21,97) :: CALL HCHAR(7,21,97) :: CALL HCHAR(7,23,97)

270 CALL HCHAR(7,23,97):: CALL HCHAR(9,23,97):: CALL HCHAR(6,22,97):: CALL HCHAR(6,24,97)

280 REM  **RAPTURE** CALL HCHAR(11,3,97,4)

290 CALL HCHAR(11,3,97,4):: CALL VCHAR(12,3,97,5):: CALL VCHAR(13,7,97,3):: CALL VCHAR(13,9,97,5) :: CALL VCHAR(12,8,97)

300 CALL VCHAR(14,8,97):: CALL VCHAR(12,5,97):: CALL VCHAR(13,4,97,2):: CALL VCHAR(15,5,97):: CALL VCHAR(16,6,97):: CALL VCHAR(11,11,97,6)

310 CALL HCHAR(11,12,97,2) :: CALL HCHAR(12,13,97,2):: CALL HCHAR(13,12,97,2) :: CALL HCHAR(11,15,97,5) :: CALL VCHAR(12,17,97,5)

320 CALL VCHAR(11,20,97,5) :: CALL VCHAR(11,22,97,5):: CALL VCHAR(16,21,97) :: CALL HCHAR(11,24,97,4) :: CALL VCHAR(12,24,97,5)

330 CALL VCHAR(14,25,97) :: CALL VCHAR(11,29,97,6):: CALL HCHAR(11,30,97,2) :: CALL VCHAR(13,30,97) :: CALL HCHAR(16,30,97,2)

340 CALL VCHAR(12,26,97) :: CALL VCHAR(13,25,97)

350 CALL VCHAR(15,26,97) :: CALL VCHAR(16,27,97)

360 CALL VCHAR(5,7,98) :: CALL VCHAR(4,18,98):: CALL VCHAR(12,4,98):: CALL VCHAR(12,25,98) :: CALL VCHAR(12,7,98) :: CALL VCHAR(9,2,98)

370 CALL VCHAR(9,5,98) :: CALL VCHAR(16,2,98):: CALL VCHAR(16,10,98):: CALL VCHAR(16,16,98)

380 CALL VCHAR(16,23,98) :: CALL VCHAR(5,20,98) :: CALL VCHAR(5,22,98):: CALL VCHAR(5,27,98)

390 CALL VCHAR(9,4,99) :: CALL VCHAR(9,7,99) :: CALL VCHAR(5,9,99):: CALL VCHAR(5,10,99) :: CALL VCHAR(4,16,99)

400 CALL VCHAR(5,25,99) :: CALL VCHAR(5,24,99) :: CALL VCHAR(16,4,99) :: CALL VCHAR(16,7,99) :: CALL VCHAR(12,9,99)

410 CALL VCHAR(15,6,99) :: CALL VCHAR(14,5,99) :: CALL VCHAR(16,25,99):: CALL VCHAR(16,28,99):: CALL VCHAR(15,27,99):: CALL VCHAR(14,26,99)

420 CALL VCHAR(16,12,99) :: CALL VCHAR(16,18,99):: CALL VCHAR(11,14,99)

430 CALL VCHAR(3,4,100) :: CALL VCHAR(3,7,100):: CALL VCHAR(7,9,100):: CALL VCHAR(5,19,100):: CALL VCHAR(6,18,100):: CALL VCHAR(7,24,100)

440 CALL VCHAR(11,7,100) :: CALL VCHAR(12,6,100):: CALL VCHAR(13,5,100):: CALL VCHAR(13,14,100):: CALL VCHAR(12,15,100)

450 CALL VCHAR(16,22,100) :: CALL VCHAR(13,26,100) :: CALL VCHAR(12,27,100) :: CALL VCHAR(11,28,100)

460 CALL VCHAR(3,2,101):: CALL VCHAR(3,5,101):: CALL VCHAR(7,7,101) :: CALL VCHAR(7,11,101):: CALL VCHAR(5,15,101):: CALL VCHAR(6,16,101)

470 CALL VCHAR(7,20,101):: CALL VCHAR(7,22,101):: CALL VCHAR(11,2,101):: CALL VCHAR(15,4,101):: CALL VCHAR(16,5,101):: CALL VCHAR(11,10,101)

480 CALL VCHAR(12,19,101):: CALL VCHAR(16,20,101):: CALL VCHAR(11,23,101) :: CALL VCHAR(15,25,101) :: CALL VCHAR(16,26,101)

490 CALL VCHAR(6,8,102) :: CALL VCHAR(6,23,102)

500 CALL VCHAR(5,17,103) :: CALL VCHAR(6,26,103) :: CALL VCHAR(7,26,104)

510 DISPLAY AT(20,9):"PRESS ANY KEY TO" :: DISPLAY AT(21,13):"CONTINUE"

520 CALL SCREEN(11)

530 CALL SPRITE(#2,108,2,150,10,0,15) :: CALL MAGNIFY(3)

540 FOR I=9 TO 12 :: CALL COLOR(I,2,1) :: NEXT I

550 CALL KEY(0,K,S) :: IF S=0 THEN 550 :: IF K>-1 THEN GOTO 560

560 CALL CLEAR :: CALL SCREEN(2) :: CALL CHARSET :: CALL DELSPRITE(ALL)

570 REM  **INIT VARIABLES**

580 Q=3 :: LEV=1 :: DSPD=10 :: D=6 :: SCO=0 :: LC=0

590 REM  ** INIT CUSTOM CHARACTERS **

600 FTL$="0000001E1F1F1F0F"

610 FT$="173C3C7E7E3C18BD"

620 FTR$="00000078F8F8F8F0"

630 FL$="01187DFFFF7D1801"

640 FC$="3C4EBEFFFFFF7E3C"

650 FR$="8018BEFFFFBE1880"

660 FBL$="0F1F1F1F1E"

670 FB$="BD183C7E7E3C3C18"

680 FBR$="F0F8F8F878"

690 ST$="1818181818181818"

700 CALL CHAR(33,ST$,88,FTL$,89,FT$,90,FTR$,91,FL$,92,FR$,93,FBL$,94,FB$,95,FBR$,40,FC$)

710 CALL CHAR(136,"FFFFFFFFFFFFFFFF")

720 A$=CHR$(88)&CHR$(89)&CHR$(90)&CHR$(33) :: B$=CHR$(91)&CHR$(40)&CHR$(92)&CHR$(33)

730 C$=CHR$(93)&CHR$(94)&CHR$(95)&CHR$(33)

740 FOR R=0 TO 1 :: FOR C=0 TO 5

750 CALL HCHAR(1,1,136,224)

760 DISPLAY AT(R*3+19,C*4-R*2+5):SEG$(A$,1,3+R);

770 DISPLAY AT(R*3+20,C*4-R*2+5):SEG$(B$,1,3+R);

780 DISPLAY AT(R*3+21,C*4-R*2+5):SEG$(C$,1,3+R);

790 NEXT C :: NEXT R

800 RESTORE 1270

810 FOR SP=96 TO 132 STEP 4 :: READ SP$ :: CALL CHAR(SP,SP$) :: NEXT SP

820 CALL HCHAR(1,1,136,224) :: CALL COLOR(3,2,8,4,2,8,5,2,8,6,2,8,7,2,8,14,8,1,8,16,1,2,9,16) :: CALL SCREEN(11)

830 CALL SPRITE(#1,100,2,170,5) :: CALL SPRITE(#2,112,7,99,150,0,-15)

840 CALL SPRITE(#4,112,7,75,125,0,-15)

850 CALL SPRITE(#3,96,2,10,5,0,20)

860 CALL MAGNIFY(3)

870 DISPLAY AT(3,21):STR$(Q);

880 DISPLAY AT(1,16):"LEVEL"&STR$(LEV);

890 DISPLAY AT(2,2):STR$(SCO); :: DISPLAY AT(8,26):"*";

900 CALL POSITION(#1,XPOS,YPOS)

910 IF XPOS>185 THEN GOSUB 1200

920 IF YPOS<10 THEN GOSUB 1250

930 IF XPOS<58 THEN GOSUB 1210

940 CALL JOYST(1,X,Y)

950 CALL KEY(1,KKK,SSS) :: IF KKK=18 THEN FG=1

960 CALL MOTION(#1,-Y*2.5,X*2.5)

970 CALL PATTERN(#1,Y*3+X+116)

980 CALL COINC(#1,64,208,8,C) :: IF C=-1 THEN GOTO 1220

990 CALL PEEK(-31877,C) :: IF C AND 32 THEN GOTO 1010 ELSE GOTO 900

1000 970O 890

1010 REM  ** SPIN BEE & FLASH SCREEN **

1020 CALL DELSPRITE(ALL) :: CALL SPRITE(#1,100,2,90,120) :: CALL MOTION(#1,0,0) :: RESTORE 1380

1030 I=880

1040 FOR DEAD=1 TO 8 :: CALL SOUND(10,I,1) :: I=I-30

1050 READ SPIN :: CALL PATTERN(#1,SPIN)

1060 CALL SCREEN(7) :: CALL SOUND(10,I,1) :: I=I-30

1070 READ SPIN :: CALL PATTERN(#1,SPIN)

1080 CALL SCREEN(8) :: CALL SOUND(10,I,1) :: I=I-30

1090 NEXT DEAD

1100 Q=Q-1 :: IF Q<0 THEN GOTO 1170

1110 CALL SCREEN(7) :: DISPLAY AT(6,8):"OOPS"; :: DISPLAY AT(6,13):"BE"; :: DISPLAY AT(6,16):"CAREFUL";

1120 FOR X=1 TO 400 :: NEXT X

1130 CALL SCREEN(2) :: DISPLAY AT(7,10):"HERE"; :: DISPLAY AT(7,15):"WE"; :: DISPLAY AT(7,18):"GO"; :: CALL SCREEN(7)

1140 FOR X=1 TO 400 :: NEXT X

1150 CALL SCREEN(2)

1160 GOTO 820

1170 CALL CLEAR

1180 FOR L=1 TO 16

1190 FOR X=1 TO 30 :: NEXT X :: PRINT "GAME OVER":: CALL SCREEN(L):: NEXT L:: CALL CHARSET:: CALL CLEAR:: CALL DELSPRITE(ALL):: GOTO 110

1200 CALL LOCATE(#1,185,YPOS) :: RETURN

1210 CALL LOCATE(#1,58,YPOS) :: RETURN

1220 CALL SOUND(50,440,3,554,3,659,1) :: CALL SOUND(50,440,3,554,3,880,1) :: CALL SOUND(50,988,1)

1230 CALL SOUND(200,440,3,554,3,1109,1)

1240 SCO=SCO+100 :: LC=LC+1 :: IF LC=5 THEN GOTO 1410 ELSE GOTO 830

1250 CALL LOCATE(#1,XPOS,10) :: RETURN

1260 REM  ** CHARACTER INIT DATA **

1270 DATA "000000783C1E4FE7E7FDFF03070F1E3C0000000000000181F15DF9C181000000"

1280 DATA "0F7840404140406221281452AC1308108080C82410884427118101030282FE00"

1290 DATA "31488780874023100B040100010204048C12E101E102C408F020800080402020"

1300 DATA "01011324081122E4888180C040417F00F01E0202820202468414284A35C81008"

1310 DATA "0000000001C221151521C301000000001C22418102145455555414028141221C"

1320 DATA "040402010001040B102340878087483120204080008020D008C402E101E1128C"

1330 DATA "3844828140282AAAAA2A2840818244380000000080C384A8A884438000000000"

1340 DATA "100813AC52142821624040414040780F00FE8202030181112744881024C88080"

1350 DATA "040402010001040B102340878087483120204080008020D008C402E101E1128C"

1360 DATA "007F4140C0808188E4221108241301010810C8354A2814844602028202021EF0"

1370 REM  ** SPRITE SPIN DATA **

1380 DATA 120,108,104,100,112,124,128,132

1390 DATA 120,108,104,100,112,124,128,132

1400 RETURN

1410 CALL SCREEN(9) :: CALL DELSPRITE(ALL) :: FOR I=1 TO 14 :: CALL COLOR(I,9,9) :: NEXT I

1420 GOTO 1420

1500 CALL SPRITE(#1,100,2,170,5)

Link to comment
Share on other sites

Assembly source for title screen.

 

Mark Wills is the King

 

DEF DRAW

 

HCHAR EQU 0 * flag for HCHAR

VCHAR EQU 1 * flag for VCHAR

ENDDAT EQU 255 * flag for end of data

 

VDPW EQU >8C00 * vdp write register

VDPA EQU >8C02 * vdp address register

 

DRAW MOV R11,R10 * save return address to XB

LI R3,DLIST * beginning of data list

DRAW1 CLR R0

MOVB *R3+,R0 * get command code

CI R0,>FF00 * is it END code?

JEQ QUIT * if yes, take the jump

MOV R0,R0 * compare R0 to 0 (HCHAR)

JEQ HCHR * it's a HCHAR command

* otherwise, it's a VCHAR command...

BL @GETDAT * get the VCHAR data

BL @VSBWMV * write to the screen

JMP DRAW1 * repeat

 

HCHR BL @GETDAT * get the HCHAR data

BL @VSBWMH * write to the screen

JMP DRAW1 * repeat

 

GETDAT CLR R0 * used for single byte operations

CLR R1 * used for single byte operations

CLR R2 * used for single byte operations

MOVB *R3+,R0 * get Y

SWPB R0 * move to low byte

DEC R0 * correct BASIC offset

SLA R0,5 * multiply by 32

MOVB *R3+,R1 * get x

SWPB R1 * move to low byte

DEC R1 * correct BASIC offset

A R1,R0 * add to y. R0=screen address

MOVB *R3+,R1 * get ascii code

AI R1,>6000 * add BASIC offset

MOVB *R3+,R2 * get repeat count

SWPB R2 * put in low byte

RT * return to caller

 

* VDP Single Byte Write Many Vertical (VSBWMV)

VSBWMV ORI R0,>4000 * this is a vdp write command

SWPB R0 * low byte first

MOVB R0,@VDPA * load low byte into address register

SWPB R0 * get high byte

MOVB R0,@VDPA * write high byte

V2 MOVB R1,@VDPW * write msb of r1 to vdp write register

AI R0,32 * move down to next line

DEC R2 * decrement count

JNE V2 * loop if not finished

RT * return to caller

 

* VDP Single Byte Write Many Horizontal (VSBWMH)

VSBWMH ORI R0,>4000 * this is a vdp write command

SWPB R0 * low byte first

MOVB R0,@VDPA * load low byte into address register

SWPB R0 * get high byte

MOVB R0,@VDPA * write high byte

V1 MOVB R1,@VDPW * write msb of r1 to vdp write register

DEC R2 * decrement count

JNE V1 * loop if not finished

RT * return to caller

 

QUIT CLR @>837C * clear GPL status

B *R10 * return to XB

 

* beginning of data list

DLIST BYTE HCHAR,9,13,97,19

BYTE VCHAR,3,3,97,7

BYTE VCHAR,3,6,97,7

BYTE VCHAR,3,29,97,6

BYTE HCHAR,6,4,97,2

BYTE HCHAR,6,10,97,2

BYTE VCHAR,5,13,97,4

BYTE HCHAR,5,8,97,1

BYTE VCHAR,6,7,97,1

BYTE VCHAR,7,8,97,1

BYTE VCHAR,6,9,97,1

BYTE HCHAR,7,10,97,1

BYTE HCHAR,5,11,97,1

BYTE HCHAR,5,14,97,1

BYTE HCHAR,7,14,97,1

BYTE VCHAR,6,17,97,3

BYTE VCHAR,6,25,97,2

BYTE VCHAR,6,27,97,2

BYTE HCHAR,7,30,97,2

BYTE HCHAR,8,31,97,1

BYTE HCHAR,4,15,97,1

BYTE HCHAR,4,19,97,1

BYTE VCHAR,5,23,97,1

BYTE HCHAR,5,16,97,1

BYTE HCHAR,5,18,97,1

BYTE HCHAR,6,20,97,1

BYTE HCHAR,5,21,97,1

BYTE HCHAR,7,21,97,1

BYTE HCHAR,7,23,97,1

BYTE HCHAR,7,23,97,1

BYTE HCHAR,9,23,97,1

BYTE HCHAR,6,22,97,1

BYTE HCHAR,6,24,97,1

BYTE HCHAR,11,3,97,4

BYTE VCHAR,12,3,97,5

BYTE VCHAR,13,7,97,3

BYTE VCHAR,13,9,97,5

BYTE VCHAR,12,8,97,1

BYTE VCHAR,14,8,97,1

BYTE VCHAR,12,5,97,1

BYTE VCHAR,13,4,97,2

BYTE VCHAR,15,5,97,1

BYTE VCHAR,16,6,97,1

BYTE VCHAR,11,11,97,6

BYTE HCHAR,11,12,97,2

BYTE HCHAR,12,13,97,2

BYTE HCHAR,13,12,97,2

BYTE HCHAR,11,15,97,5

BYTE VCHAR,12,17,97,5

BYTE VCHAR,11,20,97,5

BYTE VCHAR,11,22,97,5

BYTE VCHAR,16,21,97,1

BYTE HCHAR,11,24,97,4

BYTE VCHAR,12,24,97,5

BYTE VCHAR,14,25,97,1

BYTE VCHAR,11,29,97,6

BYTE HCHAR,11,30,97,2

BYTE VCHAR,13,30,97,1

BYTE HCHAR,16,30,97,2

BYTE VCHAR,12,26,97,1

BYTE VCHAR,13,25,97,1

BYTE VCHAR,15,26,97,1

BYTE VCHAR,16,27,97,1

BYTE VCHAR,5,7,98,1

BYTE VCHAR,4,18,98,1

BYTE VCHAR,12,4,98,1

BYTE VCHAR,12,25,98,1

BYTE VCHAR,12,7,98,1

BYTE VCHAR,9,2,98,1

BYTE VCHAR,9,5,98,1

BYTE VCHAR,16,2,98,1

BYTE VCHAR,16,10,98,1

BYTE VCHAR,16,16,98,1

BYTE VCHAR,16,23,98,1

BYTE VCHAR,5,20,98,1

BYTE VCHAR,5,22,98,1

BYTE VCHAR,5,27,98,1

BYTE VCHAR,9,4,99,1

BYTE VCHAR,9,7,99,1

BYTE VCHAR,5,9,99,1

BYTE VCHAR,5,10,99,1

BYTE VCHAR,4,16,99,1

BYTE VCHAR,5,25,99,1

BYTE VCHAR,5,24,99,1

BYTE VCHAR,16,4,99,1

BYTE VCHAR,16,7,99,1

BYTE VCHAR,12,9,99,1

BYTE VCHAR,15,6,99,1

BYTE VCHAR,14,5,99,1

BYTE VCHAR,16,25,99,1

BYTE VCHAR,16,28,99,1

BYTE VCHAR,15,27,99,1

BYTE VCHAR,14,26,99,1

BYTE VCHAR,16,12,99,1

BYTE VCHAR,16,18,99,1

BYTE VCHAR,11,14,99,1

BYTE VCHAR,3,4,100,1

BYTE VCHAR,3,7,100,1

BYTE VCHAR,7,9,100,1

BYTE VCHAR,5,19,100,1

BYTE VCHAR,6,18,100,1

BYTE VCHAR,7,24,100,1

BYTE VCHAR,11,7,100,1

BYTE VCHAR,12,6,100,1

BYTE VCHAR,13,5,100,1

BYTE VCHAR,13,14,100,1

BYTE VCHAR,12,15,100,1

BYTE VCHAR,16,22,100,1

BYTE VCHAR,13,26,100,1

BYTE VCHAR,12,27,100,1

BYTE VCHAR,11,28,100,1

BYTE VCHAR,3,2,101,1

BYTE VCHAR,3,5,101,1

BYTE VCHAR,7,7,101,1

BYTE VCHAR,7,11,101,1

BYTE VCHAR,5,15,101,1

BYTE VCHAR,6,16,101,1

BYTE VCHAR,7,20,101,1

BYTE VCHAR,7,22,101,1

BYTE VCHAR,11,2,101,1

BYTE VCHAR,15,4,101,1

BYTE VCHAR,16,5,101,1

BYTE VCHAR,11,10,101,1

BYTE VCHAR,12,19,101,1

BYTE VCHAR,16,20,101,1

BYTE VCHAR,11,23,101,1

BYTE VCHAR,15,25,101,1

BYTE VCHAR,16,26,101,1

BYTE VCHAR,6,8,102,1

BYTE VCHAR,6,23,102,1

BYTE VCHAR,5,17,103,1

BYTE VCHAR,6,26,103,1

BYTE VCHAR,7,26,104,1

BYTE 255,0

END

Edited by Opry99er
Link to comment
Share on other sites

Well thank you for your words... You know what, it just occured to me to mention this to you... I did a re-make of the 1977 Video Brain Computer game "Lemonade Stand"... Wrote it for the TI-99/4a. I released it at the Faire last year. Do you use Classic99 as your emulator? I will email you the game to play and critique, or you can DL it from my website. :). That's MY re-make legacy... I'm a bit proud of it, as it is my first full game release. Check out my YouTube channel sometime... "Opry99er.". I wrote a song called "See You At The Faire" and made a "music video" for it. Basically a montage of game development, pics from the Faire from years past, etc.... :). There is a clip or two of Lemonade Stand in there. :)

Edited by Opry99er
Link to comment
Share on other sites

Cool, I'll check out the vids, and congrats on joining the ranks of the remakers. Since you're also a homebrewer, that makes you a double threat. ;)

 

My TI emulator of choice is MESS, but I have Classic99 installed as well. Feel free to email me your game and any other code you'd like me to check out. And keep up the good work!

Link to comment
Share on other sites

Re-make in name only. My wife was always telling me about her favorite game as a kid, Lemonade Stand. I had never played it or seen it. She recounted to me what she remembered about it and I started coding.... I never played the game, looked at screenshots, nothing... I did it all from her memories. When I got done, I realized that the game she played as a kid was text only!!! After the Faire, I played it and had a moment of pride as I realized I had gone above and beyond.... It is XB/AL hybrid, and I believe it is a far better constructed game than Honeycomb Rapture. Anyway, just as a side-note... Lemonade Stand completely sold out and I will not be making another run of diskettes with manuals in the same fashion. I might release the diskette again at the Faire, but the color 16 page manuals were EXPENSIVE!!! Black and white only this time :). BTW, Marc Hull was instrumental in helping me understand game structure.... Lemonade Stand would never have been complete by the Faire were it not for his help. :)

Edited by Opry99er
Link to comment
Share on other sites

Here's the skinny, everyone... I'm having some debug trouble with this game. The COINC call has been changed back to COINC(ALL,C) as opposed to the CALL PEEK for now. I have an excellent assembly subroutine I will be adding tomorrow, thanks to Willsy, but this has to do for now. Anyway, no honeycomb graphics yet... although I DO have them done. I'll post the code for the honeycomb graphics here in a minute. Anyway, this is a zipfile that has two files in it... an XB program called "BEEGAMEXM" and a "textfile" which is actually an object file for a CALL LOAD for music. Anyway... here's the beef::

 

The music you hear is not the actual gamescreen music. It is for the boss stage, which has not been merged into this program yet... I am using it to test and debug. THere is a noticeable skip in the music which I will be fixing before release, and the title screen music and main gameplay music will all be done as well.

 

IT seems that the COINC function works once or twice, but then ceases to work after that. The COINC with the pseudo-honeycomb is flawless, but the SPRITE to SPRITE one is screwy. As I said, this is a very temporary thing, as I THINK the new assembly sub for COINC will be much more accurate and fast. Give er a rip, and have fun. (Oh yea, DSK1 is the default for this one... you can change the DSK if you want to, just look for "CALL LOAD" in the XB code)

 

**edit**

 

Change the following lines in your code to make certain functions work better

 

920--- Change line number to 955

1040--- Change "GOTO 920" to "GOTO 930"

 

This makes the screen parameters work better. Doesn't fix the COINC thing... but it will make it run better as far as screen parameters

 

 

BTW, if you're interested, here's some code for the honeycomb... on a separate screen, of course. This was the first attempt, but I am disappointed at the size... I call it as a SPRITE here because it's easy to draw.

 

100 CALL CLEAR :: CALL SCREEN(11)

110 CALL CHAR(96,"0307000F1F003F7E017B3B011E0F0003C0E000F0F800FC7E80DEDC8078F000C0")

120 CALL SPRITE(#1,96,2,50,200)

130 CALL MAGNIFY(3)

140 GOTO 140

 

It'll probably have to be re-done... to look like as if line 130 said CALL MAGNIFY(4)... That's how it will need to look, SIZE wise. With that much size, though, I'll be able to make the edges sharper, etc. Try it out, see what it looks like as CALL MAGNIFY(4)

Beegame.zip

Edited by Opry99er
Link to comment
Share on other sites

Definitely disappointed today... Even with the new super-fast CALL COINC routine, the COINCs are exactly as sparse and inconsistent as before. I seriously need to figure out why this thing is messing up. Perhaps it has to do with the negative value I used to break the background music.... I'll have to work more on it today-- updates later

Link to comment
Share on other sites

Definitely disappointed today... Even with the new super-fast CALL COINC routine, the COINCs are exactly as sparse and inconsistent as before. I seriously need to figure out why this thing is messing up. Perhaps it has to do with the negative value I used to break the background music.... I'll have to work more on it today-- updates later

I tried the code that you sent to me, and sprite collisions worked fine for me... See the AVI I sent to your email addy :)

Link to comment
Share on other sites

Sometimes,

Yea, I noticed that... I'll fix it once I figure out why my emulator is not functioning properly. :). Also need to put in the "real" gamescreen music, merge the boss stage in, put the current music in the boss stage (after fixing the "hiccup"), update scoring engine, implement title screen music, and add the level by level switch between killer bees and DDT drop.... I still have all that to do. :). And it's never a reason to apologize or being a pixel bender!!! :) Your suggestions are a big part of what made this game even as close to done as it is. One question for you.... Can I add another row of flowers to the right side of the screen using the same SEG$ formula already in use?

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