Jump to content
matthew180

Animation and Special Effect Contest

Recommended Posts

It has been rather quiet on the forum lately (I think summer had a lot to do with it), and I miss all the activity and development that was going on during the first two game contests. That and I think a few people are MIA, like what happened to Codex? Anyway, since we have already done two game contests I thought I might propose something little different.

 

I'm willing to sponsor (provide a prize or two for) an animation and special effects contest. Basically the kind of thing that you might do as a transition between screens, title screens, smooth scrolling text, windowing, explosions, movement, color cycling tricks, sounds, etc. The focus would be on usability in a game or other program. Two examples would be the:

 

1. The "entrance" of FlyGuy in my FlyGuyII remake

2. Owen's screen transition in Lemonade Stand (which I remember seeing at the Faire last year and I liked the effect a lot, and it was done in XB!)

 

No restrictions on language or anything, but it has to run on a real 99/4A in a 32K,SSSD,XB/EA configuration. What I'd like to see emerge from this contest is a library of pluggable code and examples that people can use when making games or whatever. For me it is easier to start with an idea and see what is possible rather than starting from scratch. It is also fun to see some of this stuff and wonder in amazement how it was done, then be able to see the code and use it!

 

Since I now have about one hundred 64K Boards available, I'll put one of those up as a prize with your choice of EPROM size (64, 128, 256, 512.) I'll even burn it with whatever you want. :-) I could also put up a PITFALL! cart with manual (providing I can get the printing sorted) if Retroclouds gives his blessing. I would put up an F18A, but they are not ready yet... ;-)

 

I would like some help on judging too, if anyone does not have time to compete, but still wants to participate in some way. I didn't want to think too hard about the judging criteria yet, but I think it is only fair that contestants know what they will be judged upon. So, here is some initial criteria, subject to change based on group feedback:

 

1. Size. 1 to 10 points. Size is critical on our little 99/4A, so the smaller the size, the more points. I'm thinking of basing this on a percentage of usage. For XB your program would be loaded and the SIZE command run. That would be divided by the value of SIZE without any program loaded, and multiplied by 100 to get a percentage, which would then inversely correlate to the 10 points, i.e. 1% to 9% is 10 points, 10% to 19% is 9 points, etc.

 

For assembly language the same thing would apply, however the compiled object code would be divided by >8000 (32K) which is the amount or RAM available to an assembly language program, and roughly the same amount of memory available to XB.

 

There will also be the human factor of "damn, that's small" to make sure the size comparisons are consistent. This means that XB programmers don't need to try and cram everything on a single line (that makes reading code a lot harder.)

 

Last, how much RAM being used while running will be considered. So even if you have a 1-liner, but it allocates an 8K array or something, that will count against the size and reduce the points.

 

2. Ease of use. 1 to 10 points. How easy it is to use the effect in a larger program. This includes code readability, commenting, etc. Comments will not count against XB users for size (since REM statements take up real memory.) You could also submit a runnable version and a documented version.

 

3. Wow factor. 1 to 10 points. How cool is the effect. Remember, it does not have to be big or elaborate to get a good "wow". A "that's pretty freaking neat" is just as good as "wow". :-)

 

4. Cleverness. 1 to 10 points. Did you come up with doing something in a way never shown before. This includes using XB or assembly instructions in interesting ways. An example would be the way Codex, in the original FlyGuy, managed to store an entire level using a single number! That was pretty clever.

 

5. Smoothness. 1 to 10 points. How fast (set up time) and smooth the effect runs or sounds (in the case of audio.)

 

I think there was 1 more category but I can't remember. Thus 50 points total, and fine grained enough to balance out the results I think.

 

I'm not sure how long this should run, but I'm thinking 30 days? So judging could begin on Oct 16th, which is actually a little longer than 30 days. You can enter multiple effects, but only 1 will be considered per user so you will have to let us know which one you want as the final in the contest. Feel free to start other threads based on your effect for discussion, etc., but please submit all final entries to this thread.

 

Anyone interested?

 

Matthew

Share this post


Link to post
Share on other sites

I always loved the demo scenes, and since dell'amiga and commodore64 ... would be wonderful if some good programmer can program a intro / demo for ti99!! .... there would be a starting demo scenes for our ti99! ;-)

 

beautiful would be able to make one with the new polyphonic music ..

 

 

:-D

Share this post


Link to post
Share on other sites

I was thinking about a Demo Scene style contest, so maybe this one will get people warmed up for one! There are some MSX guys who do that kind of thing and they made some very impressive demo's for the MSX1 which use the 9918A.

 

Matthew

Share this post


Link to post
Share on other sites

Nasty secret--- that Lemonade Stand effect was written in assembly. :) it's CALL LINKed. If you DL the Lemonade Stand zip from my website the source code for that subroutine is included. And I didn't write it, either. It was a gift. :)

 

I love this idea, by the way. :) I might enter something, who knows. :)

Share this post


Link to post
Share on other sites

Well, hopefully whoever wrote it will submit it, or give you permission to. I really like it and I'd like to see it distilled into a stand alone subroutine to include in assembly programs (or usage info for using in XB.)

 

So far it looks like there won't be much competition though. I hope our little corner of A.A. has not lost its steam.

 

Matthew

Share this post


Link to post
Share on other sites

I'd love to enter but I've just started a couple of projects for the Intellivision. Those along with my 7800 stuff is keeping me pretty occupied at the moment.

Share this post


Link to post
Share on other sites

Where is that redneck?? Hull, you around?

 

:). It's a magnificent effect. I believe it just scrambles the character def table several times and then returns control back to XB. The source code is on my website in a couple forms. The zipfile containing the FIAD version has the source sitting as an individual file and the .DSK version has it included as well. Marc is quite a fantastic programmer. I'd love to see more from him on the software side once he is done with his very cool SID card. :)

Edited by Opry99er

Share this post


Link to post
Share on other sites

..... I could also put up a PITFALL! cart with manual (providing I can get the printing sorted) if Retroclouds gives his blessing. I would put up an F18A, but they are not ready yet... ;-)

 

you have my blessing for the Pitfall! cart with manual :D

Thanks for starting this new competion :)

Share this post


Link to post
Share on other sites

Where is that redneck?? Hull, you around?

 

:). It's a magnificent effect. I believe it just scrambles the character def table several times and then returns control back to XB. The source code is on my website in a couple forms. The zipfile containing the FIAD version has the source sitting as an individual file and the .DSK version has it included as well. Marc is quite a fantastic programmer. I'd love to see more from him on the software side once he is done with his very cool SID card. :)

 

 

It's pretty simple really. It just reads the SIT one at a time and if the char is greater than >20+whatever offset the language is using then it decrements it by a few (cant remember how many) and then writes it back to the screen. It does this until all values are >20+the offset. Owen has the source maybe he can post it. I'm a little busy to enter the demo contest this go around but it sounds pretty neat. I'd like to help judge if you need assistance still and I would make one suggestion... All entrants should have a cool 80's sounding handle to qualify ;-)

Share this post


Link to post
Share on other sites

One more vote of thanks and support for this contest. This isn't my area of expertise at all, so I won't have an entry to contribute, but I look forward to seeing some great stuff develop. I'm trying to regain some "steam" over here, in the form of more TI time... my guess is as everyone's lives get more and less busy, there'll be 'boom' and 'bust' times on AA, and we'll see more surges of activity and interest as people's spare time frees up.

Share this post


Link to post
Share on other sites

Compliments of Marc Hull. This is called "MELT"

 

  	DEF  MELT

VDPWA  EQU  >8C02
VDPWD  EQU  >8C00
VDPRD  EQU  >8800


BUF	BSS  768



MELT   LI   R6,->0100
  	LI   R0,0
  	LI   R1,BUF
  	LI   R2,768

  	SWPB R0
  	MOVB R0,@VDPWA
  	SWPB R0
  	MOVB R0,@VDPWA
VMBW   MOVB @VDPRD,*R1+
  	DEC  R2
  	JNE  VMBW




START  LI   R1,BUF
  	CLR  R5
LOOP1  CLR  R2
  	MOVB *R1,R2
  	CI   R2,>8000
  	JEQ  NEXT
  	JL   ADJUST
  	A	R6,R2
  	AI   R6,->0100
  	CI   R6,->1F00
  	JNE  NOREST
  	LI   R6,->0100


NOREST LI   R5,1
  	MOVB R2,*R1
  	JMP  NEXT
ADJUST LI   R2,>8000
  	LI   R5,1
  	MOVB R2,*R1
NEXT   INC  R1
  	CI   R1,BUF+768
  	JNE  LOOP1

  	CI   R5,0
  	JEQ  DONE


  	CLR  R0
  	LI   R1,BUF
  	LI   R2,768

  	ORI  R0,>4000      	(THIS ROUTINE CHANGES THE
  	SWPB R0             	MEMORY CONTENTS)
  	MOVB R0,@VDPWA
  	SWPB R0
  	MOVB R0,@VDPWA
  	NOP
VMBW1  MOVB *R1+,@VDPWD
  	DEC  R2
  	JNE  VMBW1
  	LI   R0,>9F00
  	MOVB R0,@>8400     	TURN SOUND OFF FOR OWENS PROG



  	JMP  START


DONE   RT
  	END  MELT



Share this post


Link to post
Share on other sites

I'm sure Sometimes99er won't me mind showing this... It's something he posted to the Atariventure thread, and it's just beautiful. It looks better on hardware than in emulation, but you can see it. =)

 

100 CALL CLEAR :: CALL SCREEN(5) :: CALL MAGNIFY(3)
110 CALL CHAR(48,"1C0F0707010100000306000000000000000080E0E0F87CFCC")
120 CALL CHAR(52,"381F0F0F030100000306000000000000000080C0C0F87CFECE")
130 CALL CHAR(56,"603C1F0F07010000030600000000000000000080C0F878FEDF07")
140 CALL CHAR(60,"0080701E0F03000003060000000000000000000080F8F8FCDE0F0701")
150 CALL CHAR(64,"000000007C0F0F0003060000000000000000000000D8F8F8DC1E0F0701")
160 CALL CHAR(68,"000000000000000F3D67040000000000000000000018F8F8DC1C1E0E0E020202")
170 CALL CHAR(72,"0000000000000003070F0C1800000000000000000018F8F8FC1C0E0E0E060604")
180 CALL CHAR(76,"00000000000003060D1B0400000000000000000000F8F8FCDC1E0E0E060602")
190 CALL CHAR(80,"00000000071F7F00010304000000000000000000C0F8FCFCDE1E0E060202")
200 CALL CHAR(84,"0000067F7F0701000103040000000000000000C0C0F8FCFCDE0E06")
210 CALL CHAR(88,"003E0F07070100000302040000000000000080E0E0F8FCFCCC")
220 CALL CHAR(92,"000F07030100000003020400000000000080C0E0E0F878F8C")
230 CALL CHAR(96,"180F07070101000003060400000000000080C0E0E0FC78F8C")
240 CALL SPRITE(#1,48,2,120,10,-1,
250 FOR A=48 TO 96 STEP 4 :: CALL PATTERN(#1,A) :: CALL SOUND(10,110,30) :: NEXT A :: GOTO 250

 

My favorite part is that this is done in XB. Quite cool.

Edited by Opry99er
  • Like 1

Share this post


Link to post
Share on other sites

Cool. I'll have to check that out later tonight and see what I can do with it. :-)

 

Edit: so far you are winning this contest...

 

Matthew

Edited by matthew180

Share this post


Link to post
Share on other sites

Well, I'm really focused on trying to get my CRPG done before getting side-lined, but I can share this:

 

I plan to use sprite graphics to create special effects in combat. One of my requirements was the ability to have them move in circles. I also did not want to use the nasty floating-point mathematical functions. So I wrote my own integer-based system:

 

* Data block for trigonometric values
TRGDAT BYTE 0,6,12,18,25,31,37,43
      BYTE 49,56,62,68,74,80,86,92
      BYTE 97,103,109,115,120,126,131,136
      BYTE 142,147,152,157,162,167,171,176
      BYTE 181,185,189,193,197,201,205,209
      BYTE 212,216,219,222,225,228,231,234
      BYTE 236,238,241,243,244,246,248,249
      BYTE 251,252,253,254,254,255,255,255

* R0 = Radius
* R1 - Angle (0-255)
* R2 = Position Adjustment
TRIGX  AI   R1,64
      ANDI R1,>00FF
TRIGY  MOV  R11,*R10+
      MOV  R1,R3
      SRL  R3,6
      JEQ  TG1
      CI   R3,1
      JEQ  TG2
      CI   R3,2
      JEQ  TG3
      MOVB @TRGDAT(R1),R2
      SRL  R2,8
      AI   R2,-256
      ABS  R2
      MPY  R0,R2
      DIV  @W256,R2
      NEG  R2
      JMP  TG4
TG1    MOVB @TRGDAT(R1),R2
      SRL  R2,8
      MPY  R0,R2
      DIV  @W256,R2
      JMP  TG4
TG2    MOVB @TRGDAT(R1),R2
      SRL  R2,8
      AI   R2,-256
      ABS  R2
      MPY  R0,R2
      DIV  @W256,R2
      JMP  TG4
TG3    MOV  @TRGDAT(R1),R2
      SRL  R2,8
      MPY  R0,R2
      DIV  @W256,R2
      NEG  R2
TG4    RT

 

You supply your radius and angle, and it returns an X and Y position adjustment in R2.

 

I have a demo here as a MESS disk image. You can use TI99Dir if you want to extract the files to Classic99.

 

1. Insert the E/A cartridge (or set the ROM, whatever)

2. Select option #3

3. Type in "DSK#.CIRCLE" where # is the disk you've extracted the files to

4. Press and hold any key

 

Adamantyr

Share this post


Link to post
Share on other sites

Thanks to Owen for remembering my old "dude looks like a lady" XB animation. Was supposed to be a dragon.

This one is called FAT, and it takes whatever character patterns are available (in VDP memory) and make them "fat". Basically I'm using two instructions, SRL and SOC.

SRL = Shift Right Logical. It moves all pixels one position to the right.

SOC = Set Ones Corresponding. It takes the pixels moved right and combines them with the original pixels. A "fat" effect ...

icon_smile.gif

Edited by sometimes99er

Share this post


Link to post
Share on other sites

Ohh... trying to draw me in again, eh? I have a really nice explosion in the game (XB) that I was working on and haven't for a while...

 

Would prefer the explosion's delivery first in my game, but I just might have to enter.

 

-H

Share this post


Link to post
Share on other sites

I found the first successful program I ever wrote. =) haha... I pasted it below. Please understand that I post this for nostalgia and the "ha ha" factor, and not as an entry into this contest. =) I remember writing this.... took me two hours to get it to work and I was so frustrated... it's pretty awesome to find little stuff like this. It was on an old 5.25 floppy I was going through last night. The disk was corrupted and this was the only thing I could get off of it. =)

 

100 CALL CLEAR
110 CALL SCREEN(16)
120 PRINT "COLOR TEST"
130 PRINT
140 PRINT
150 PRINT "BBD8($*!*;"
160 PRINT "b8*Blshue,"
170 PRINT "8ghsn#&*LV"
180 PRINT "hs84$*()B,"
190 PRINT "fF*N0R#*2F"
191 PRINT "***OWEN***"
192 PRINT "**FIRST***"
193 PRINT "**PROGRAM*"
194 PRINT "BKFH**3290"
200 FOR S=2 TO 14
210 FG=INT(RND*10)+4
220 BG=INT(RND*10)+4
230 CALL COLOR(S,FG,BG)
240 NEXT S
250 GOTO 200

 

Good memories!

Share this post


Link to post
Share on other sites

This is another of my favorite XB effects. Karsten wrote the Brick program, and I added the SPRITE for effect.

 

***For those of you who don't know, sometimes99er is a badass

 

100 CALL MAGNIFY(3)
110 CALL CHAR(96,"0F1F1C1C1E1F0F03030307070202020384C4241424C4841FC43C040480804070")
120 CALL CHAR(100,"0F1F1C1C1E1F0F03030307070303030380C0201020C18204A8502840000080E0")
130 CALL CHAR(104,"0F1F1C1C1E1F0F03030307070305080E80C0201020C080000040FF4080008070")
140 CALL CLEAR
150 CALL SCREEN(2)
160 CALL CHAR(33,"FF")
170 CALL HCHAR(1,1,40,256)
180 CALL HCHAR(8,1,33,32)
190 CALL COLOR(1,15,1)
200 CALL COLOR(2,15,7)
210 CALL SPRITE(#1,96,2,42,100)
220 CALL PATTERN(#1,96)
230 CALL CHAR(40,"FF202020FF020202")
240 CALL CHAR(40,"FF404040FF040404")
250 CALL PATTERN(#1,100)
260 CALL CHAR(40,"FF808080FF080808")
270 CALL CHAR(40,"FF010101FF10101")
280 CALL PATTERN(#1,104)
290 CALL CHAR(40,"FF020202FF20202")
300 CALL CHAR(40,"FF040404FF40404")
310 CALL PATTERN(#1,100)
320 CALL CHAR(40,"FF080808FF80808")
330 CALL CHAR(40,"FF101010FF010101")
340 GOTO 220

  • Like 1

Share this post


Link to post
Share on other sites

Hey sometimes---

 

that SRL/SOC font thing is pretty wicked! I am very impressed. To reverse it, you would just Re-write the original TEXT to the screen, thereby negating the effect... This could be useful in many applications--and not just for text. :thumbsup:

Share this post


Link to post
Share on other sites

Hey sometimes---

 

that SRL/SOC font thing is pretty wicked! I am very impressed. To reverse it, you would just Re-write the original TEXT to the screen, thereby negating the effect... This could be useful in many applications--and not just for text. :thumbsup:

Nah, you'd do a CALL CHARSET. Wouldn't you ? ;)

Share this post


Link to post
Share on other sites

***For those of you who don't know, sometimes99er is a badass

Likewise ! :lol:

 

100 CALL CLEAR :: CALL SCREEN(1) :: N=4
110 READ A$ :: IF A$="END" THEN 130
120 DISPLAY AT(N,1):A$ :: N=N+1 :: GOTO 110
130 CALL COLOR(1,12,14)
140 CALL CHAR(35,"B844A2928A443A") :: CALL SOUND(100,110,0,111,0)
150 CALL CHAR(35,"38549292925438") :: CALL SOUND(100,130,0,131,0)
160 CALL CHAR(35,"3A448A92A244B8") :: CALL SOUND(100,220,0,221,0)
170 CALL CHAR(35,"384482FE824438") :: CALL SOUND(100,147,0,148,0)
180 GOTO 140
190 DATA " ###   ### ####  ##### #   #","#     #    #   # #     #   #"
200 DATA " ###  #    ####  ####  #   #","    # #    #   # #     # # #"
210 DATA "####   ### #   # #####  # #","","     #   #  ###  #   #"
220 DATA "     #   # #   # #   #","      ###  #   # #   #","       #   #   # #   #"
230 DATA "       #    ###   ###","","   ###  #   # ##### #   #"
240 DATA "  #   # #   # #     ##  #","  #   # #   # ####  # # #"
250 DATA "  #   # # # # #     #  ##","   ###   # #  ##### #   #","END"

Share this post


Link to post
Share on other sites

Well, I mainly meant that if your routine FATO was modified to revert back to original that you would do it that way... I wasn't referring to the XB program, but perhaps I should have. :). Yes, CHARSET would be most effiient in XB.

 

I have yet to run your XB listing... On my phone now. :)

Share this post


Link to post
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.

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