Jump to content
IGNORED

2015 Holiday Demo Contest


Opry99er

Recommended Posts

I have had very good success chaining these programs together... Tursi's has a very clever 'exit' built in, so no need to add anything. On the ones with a stable GOTO that just loops indefinitely (like my Silent Snowman) I instead send control to a subprogram that does a CALL KEY loop amd then bounces to a CALL CLEAR, CALL SCREEN(8), CALL DELSPRITE, and CALL CHARSET to reset all graphics, then returns to the next demo. Seems to be working well. :)

  • Like 2
Link to comment
Share on other sites

All programs are successfully chained now.

 

I had to add some RESTORE lines and a couple lines for "exit" routines where needed (to advance to the next demo). I also had to change the names of a few variables to play nice with DIM'd arrays.

 

All demos work as they should.

 

On size: We have only 3199 bytes left of PROGRAM space (unexpanded, console only space) after lucien's demo... So we are getting tight. I think we will have room for 3 POSSIBLY 4 more demos on this one program, and then we may have to have a "Side B" program that is on the flipside of the tape.

 

Having fun. :) Will update further when more demos are posted.

  • Like 1
Link to comment
Share on other sites

On the work you're doing. The resulting CS1 (program) will take long to load and also take some time to "prescan" before finally running.

 

Can't you simply chain programs ? Make one program "run" the next. Relatively short loading inbetween. Then the only limiting factor as such would be tape length ?

 

Also I have 5 more ideas noted for the contest, but I will hold back and do some assembler game programming instead.

 

;)

Edited by sometimes99er
Link to comment
Share on other sites

Yes, it will take a bit of time to initially load. But the prescan is not bad at all. :)

 

I will post up the code here when I get back from the build-and-grow workshop with my son. Probably this afternoon.

 

The issue with loading each demo from tape one at a time is that with tape, you cannot RUN or OLD from CS1 from within a program. It has to be done manually.

 

Many of the tape games from BITD were fully maxed out games that took 3 or 4 minutes to load the data... Nice thing is, once loaded, you can run all the programs, one after the other, with the click of a button. No wait times between demos. :)

 

I'll post the code in a bit. You guys can tell me what you'd prefer. :)

Link to comment
Share on other sites

I made a couple last second changes and haven't tested it yet.

 

Let me know what you think and if anything needs to be adjusted.

 

Press any key to advance... some demos are more responsive than others to the CALL KEY.

 

Most have to reach a certain point in the demo to allow the keypress.

DEMOCHAIN.zip

  • Like 1
Link to comment
Share on other sites

Well, I've never tried to code small before :) so this was a fun challenge... Regrettably my concept fails to fit. But I want to share it anyway... I could and may change the message to fit, but that isn't what I was going for.

 

This isn't an actual entry, since it doesn't meet the criteria. But I enjoyed doing this. First time I've used DATA and READ.

 

Title: XmasLights

Story: Too many bytes for Christmas

Programmer: Matthew Splett

1 CALL CLEAR::CALL SCREEN(15)::CALL COLOR(2,7,16,10,11,15,11,13,15,12,7,15)::G$="001C3E7F7F7F3E1C"::CALL CHAR(104,G$,112,G$,120,G$)
2 K$=RPT$("03071CF0",3)::CALL CHAR(42,"2854AA54AA5428",43,"2050A85020",44,"205020",45,K$)::FOR I=1 TO 8::C=INT(RND*226)+1
3 CALL SPRITE(#I,42,16,3,C,9,3,#I+8,43,16,2,C+13,7,2,#I+16,44,16,1,C+27,5,1)::NEXT I::CALL VCHAR(6,3,45,7)
4 CALL VCHAR(6,7,45,7)::READ M::FOR I=1 TO M::READ L,C::FOR J=1 TO L::READ Y,X::CALL VCHAR(Y,X,C)::NEXT J::NEXT I
5 FOR I=1 TO 8 STEP 2::CALL CHAR(45,SEG$(K$,I,16))::CALL COLOR(11,4+I,15,12,14-I,15)::NEXT I::GOTO 5
6 DATA 10,2,104,5,3,5,7,3,112,7,4,8,5,7,6,9,120,10,9,10,10,10,11,10,12,9,11,9,10,11,9,12,10,12
7 DATA 11,7,112,9,14,10,14,11,14,12,14,10,15,9,16,10,17,7,120,9,19,10,19,11,19,12,19,10,20,9,21,10
8 DATA 22,12,112,9,24,10,24,11,24,12,25,12,26,11,27,10,27,9,27,12,27,13,27,14,26,14,25,13,112,14,8
9 DATA 15,9,16,9,17,10,18,11,19,11,20,12,14,12,15,11,16,11,18,9,19,9,20,8,12,120,17,14,18,14,19,14
10 DATA 20,14,17,15,18,16,19,16,20,16,17,17,18,18,19,18,20,18,10,112,17,23,18,23,19,23,20,23,18,22
11 DATA 17,21,18,20,19,20,20,21,19,22,10,120,17,28,17,27,17,26,18,25,19,26,19,27,20,28,21,27,21,26
12 DATA 21,25

-M@

  • Like 3
Link to comment
Share on other sites

Rasmus.... Not 100% sure on the Christmas-y theme, but damn that was nice!!! :)

 

 

Iwantgames: that is a good contribution. Every one of us learned by studying, copying, and imitating the code of others. Really dig it.

 

 

And @jedimatt: LOVE your demo. No way to crunch anything further? It really is lovely. :) I tried crunching lines for a bit but for some reason get hung up with the last few DATA statements. Please get it squished. It needs to be on the demo tape..... seriously.

Link to comment
Share on other sites

dad helped me with the math and the sled moving...



it is called christmas day sledding






100 CALL CLEAR :: CALL COLOR(9,16,1):: CALL CHAR(100,"FFFFFFFFFFFFFFFF80C0E0F0F8FCFEFF")

REM this line sets up the snow graphics and screen



200 CALL CHAR(104,"00040A21723CBC4E271309040201000000C0C000A04008130B84CAF172789840"):: CALL MAGNIFY(3)

REM sled graphics and sled size (i used maggellan)



300 ROW=3 :: COL=1 :: REPEAT=22

REM this is how my loop starts



400 FOR X=1 TO 22 :: CALL VCHAR(ROW,COL,100,REPEAT) :: ROW=ROW+1 :: COL=COL+1 :: REPEAT=REPEAT-1 :: NEXT X

REM drawing the snow



500 ROW=2 :: COL=1 :: FOR X=1 TO 23 :: CALL HCHAR(ROW,COL,101):: ROW=ROW+1 :: COL=COL+1 :: NEXT X

REM drawing the top of the snow



600 SPRITEROW=1 :: SPRITECOL=1

REM this is where the sled starts



700 CALL SPRITE(#1,104,7,SPRITEROW,SPRITECOL):: DISPLAY AT(4,8):"MERRY CHRISTMAS!!!";:: DISPLAY AT(6,8):"FROM BUCKOBRAND!!!"

REM this line draws my sled and writes a message



800 SPRITEROW=SPRITEROW+1 :: SPRITECOL=SPRITECOL+1

REM this line makes my sled move down and over



900 CALL LOCATE(#1,SPRITEROW,SPRITECOL):: IF SPRITEROW>192 THEN SPRITEROW=0 :: SPRITECOL=0

REM this line redraws the sled in the new place



1000 GOTO 800

REM this line sends the program back to the sled moving line

Edited by BuckoBrand
  • Like 5
Link to comment
Share on other sites

This isn't an actual entry, since it doesn't meet the criteria. But I enjoyed doing this. First time I've used DATA and READ.

Did a little data compression for you - would you like to enter it now? :)

 

1 CALL CLEAR::CALL SCREEN(15)::CALL COLOR(2,7,16,10,11,15,11,13,15,12,7,15)::G$="001C3E7F7F7F3E1C"::CALL CHAR(104,G$,112,G$,120,G$)
2 K$=RPT$("03071CF0",3)::CALL CHAR(42,"2854AA54AA5428",43,"2050A85020",44,"205020",45,K$)::FOR I=1 TO 8::C=INT(RND*226)+1
3 CALL SPRITE(#I,42,16,3,C,9,3,#I+8,43,16,2,C+13,7,2,#I+16,44,16,1,C+27,5,1)::NEXT I::CALL VCHAR(6,3,45,7)
4 CALL VCHAR(6,7,45,7)::READ M::FOR I=1 TO M::READ N::L=INT(N/256)::C=N-L*256::FOR J=1 TO L::READ N::Y=INT(N/256):=N-Y*256::CALL VCHAR(Y,X,C)::NEXT J::NEXT I
5 FOR I=1 TO 8 STEP 2::CALL CHAR(45,SEG$(K$,I,16))::CALL COLOR(11,4+I,15,12,14-I,15)::NEXT I::GOTO 5
6 DATA 10,616,1283,1287,880,1796,2053,1798,2424,2569,2570,2571,2572,2315,2314,2825,3082,3083,1904,2318,2574,2830,3086
7 DATA 2575,2320,2577,1912,2323,2579,2835,3091,2580,2325,2582,3184,2328,2584,2840,3097,3098,2843,2587,2331,3099,3355
8 DATA 3610,3609,3440,3592,3849,4105,4362,4619,4875,5132,3596,3851,4107,4617,4873,5128,3192,4366,4622,4878,5134,4367
9 DATA 4624,4880,5136,4369,4626,4882,5138,2672,4375,4631,4887,5143,4630,4373,4628,4884,5141,4886,2680,4380,4379,4378
10 DATA 4633,4890,4891,5148,5403,5402,5401 
Since all the numbers were small, I packed the L/C and Y/X pairs by multiplying the first by 256 and adding the second -- essentially byte packing two 8 bit values into a 16-bit value. Reading back, I just reverse the process. INT(N/256) gives us the high byte, and then we subtract to get the remainder, which is the low byte. :)
  • Like 4
Link to comment
Share on other sites

Did a little data compression for you - would you like to enter it now? :)

 

Since all the numbers were small, I packed the L/C and Y/X pairs by multiplying the first by 256 and adding the second -- essentially byte packing two 8 bit values into a 16-bit value. Reading back, I just reverse the process. INT(N/256) gives us the high byte, and then we subtract to get the remainder, which is the low byte. :)

Oh, that is brilliant! I love it! And thank you so much! This is a great technique. I'll get it over to the entries thread then :)

 

-M@

Link to comment
Share on other sites

Couple teasers for you guys. ;)

 

 

20151114_234525_zpsxuhqoc0j.jpg

 

 

20151114_234753_zps0aof2ugo.jpg

 

 

20151114_234650_zpsjkzvxapg.jpg

 

 

Got the sizing down just right now... Insert lays in the case perfectly... This was a test run with printer paper, so it does not look perfect. I am doing it on nice semi-gloss card stock when the time comes. :)

Edited by Opry99er
  • Like 2
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...