Jump to content
IGNORED

I'm back.


Recommended Posts

Quote

Do we think a 4K competition will help with that?

It's a different kind of competition, not intended to replace the IntyBASIC contest itself.  It's a different challenge altogether.  If we find that nobody wants to compete in the challenge, then there's no point.

 

As for the last IntyBASIC contest, I do not know what transpired, but considering that the world was in the midst of the virus apocalypse at the time, perhaps most people had other things on their minds ... *shrug*

 

Also, the fact that at least two entries were clearly commercial-quality projects executed by a team of well-known veterans, may not have helped to motivate newcomers to compete. ;)

 

    -dZ.

Edited by DZ-Jay
  • Like 2
Link to comment
Share on other sites

Well, I just think the contest is a great opportunity to grow the community of developers and encourage folks to keep practicing.

 

For instance, I would love to see entries from @Vincehood, @Brian’s Man Cave, @YannAros, @Intellivision Brasil, @Mik's Arcade, and many others who are out there doing cool stuff.

 

Plus all the usual suspects who participated in previous contests, imagine if we could have them join again.

 

What can we do to make the contest as accessible and attractive to those folks as possible?

Link to comment
Share on other sites

1 minute ago, cmadruga said:

Well, I just think the contest is a great opportunity to grow the community of developers and encourage folks to keep practicing.

 

For instance, I would love to see entries from @Vincehood, @Brian’s Man Cave, @YannAros, @Intellivision Brasil, @Mik's Arcade, and many others who are out there doing cool stuff.

 

Plus all the usual suspects who participated in previous contests, imagine if we could have them join again.

 

What can we do to make the contest as accessible and attractive to those folks as possible?

 

Of course, that's the purpose of the IntyBASIC contest, and that will come in time.  Oscar already said he is too busy to run it, and I am exploring the possibility of hosting it myself.

 

We were discussing a separate challenge here.  It seems you are not interested in it, and that's fine. :)

 

     -dZ.

Link to comment
Share on other sites

1 minute ago, DZ-Jay said:

 

Of course, that's the purpose of the IntyBASIC contest, and that will come in time.  Oscar already said he is too busy to run it, and I am exploring the possibility of hosting it myself.

 

We were discussing a separate challenge here.  It seems you are not interested in it, and that's fine. :)

 

     -dZ.

I’m the guy who’s asking for bank switching to be allowed as part of the contest, so I can do gigantic games. Not exactly the 4K target demographic ;-)


But it’s all cool, I’m not trying to poke holes or anything. I appreciate you offering to keep things going.
 

Please let me know if I can help in any way. Including by staying out of it ?

 

Link to comment
Share on other sites

As for making the IntyBASIC Programming Contest more accessible, I suppose we could offer some very enticing prizes, and create some better categories.  In my opinion, the missing piece is the promotion and enthusiastic cheerleading to keep folks motivated.

 

I know that to keep participation high in my own high-score competitions, and reduce attrition, I had to do some very heavy promoting.  It was a lot of work, but I went to different forums and invited people, hounded the (now dead) AA chatroom, and basically tried to reach out to everyone inside and outside the community.

 

I also kept myself busy constantly trying to motivate people to continue trying, encouraging "smack-talk" among the top players, and generally keeping the excitement alive.

 

It is a lot of work, though, but I think it is important.

 

    -dZ.

Link to comment
Share on other sites

2 minutes ago, cmadruga said:

I’m the guy who’s asking for bank switching to be allowed as part of the contest, so I can do gigantic games. Not exactly the 4K target demographic ;-)


But it’s all cool, I’m not trying to poke holes or anything. I appreciate you offering to keep things going.
 

Please let me know if I can help in any way. Including by staying out of it ?

 

 

Nah, it's all good.  I didn't mean it to sound so terse.  :)

 

Honestly, I wasn't trying to replace the regular contest.  Perhaps the 4K contest should be just a special "extra challenge" within the overall contest -- like a separate category.

 

I agree that bank-switching should be allowed, at least on its own category.  If I were to run the programming contest, I may consider altering the rules slightly to lower the barriers for the games people want to make.

 

I think the original intention was to motivate the community and showcase the power of IntyBASIC, and have fun.  People should not feel obligated to do a production-ready, highly sophisticated masterpiece just to enter the contest.

 

It's a similar problem to what I encountered in my high-score competition:  Once the veterans join in and start posting their super stupendous high scores, no newbie wants to join.  :(

 

And that's the trick:  How do you encourage newbies to participate with their modest creations, while still challenging the veterans to create a grand masterpiece?

 

      -dZ.

  • Like 1
Link to comment
Share on other sites

My reasons for not submitting in the last contest were A) lack of continuous time free and B) the level of IntyBASIC games has been raised so far in the last few years that whatever I could produce would be nowhere near the quality of most other possible entries. I'm not a beginner anymore, but realize that others are so much better at coding and in particular graphics that I have little place in the big contest.

 

A size limited compo would bring entirely different values to the table. I'm not saying I'll perform any better there, but it likely will level the playfield a little.

Link to comment
Share on other sites

7 hours ago, carlsson said:

In this case, I think Yoda is wrong. There absolutely is a "try" between "do" and "do not". If it turns out to be pointless to make any playable game within 4 kB, then so mote it be and the compo could be called off or motives changed.

47e3a084f393afd380b2a0a90c5e64c9.jpg

I think you mean a TRY CATCH

 

LOL  :)

 

Link to comment
Share on other sites

36 minutes ago, carlsson said:

My reasons for not submitting in the last contest were A) lack of continuous time free and B) the level of IntyBASIC games has been raised so far in the last few years that whatever I could produce would be nowhere near the quality of most other possible entries. I'm not a beginner anymore, but realize that others are so much better at coding and in particular graphics that I have little place in the big contest.

 

A size limited compo would bring entirely different values to the table. I'm not saying I'll perform any better there, but it likely will level the playfield a little.

I agree, a size limit certainly would put the focus on game play vs, sound and graphics. 

 

I have a few ideas for mini-ish games for the Intellivision, but I am yet to setup a working dev environment. 

I have 4 project in the works for the TI99 and been bouncing between them as I get A) tired of testing the game.  B) get stuck on something and cannot "see" it at the moment.

Not looking to jump into IntyBasic until I get at least 2 of these TI games done.

 

  • Like 1
Link to comment
Share on other sites

1 hour ago, atari2600land said:

I am trying to make a 4k game in INTYBasic. I am well on my way (right now it's 3k), but I need some help. What does the % mean? I'm hoping to save some space using it, but I don't understand what it does.

The "%" symbol is the modulo operator:  It returns the remainder of a division.  For example, if you divide 10 by 6, you get 1 and a remainder of 4.  Thus, an integer division (10 / 6) will return 1; and a modulo operation (10 % 6) will return 4.

 

The modulo operator is most useful for powers of 2, because it tells you the right-most bits that are left over from a division by 2.  It is the same as performing a mask.  So, for instance, (x % 4) is the same as (x And (4 -1)) or (x And 3) -- it will return the right-most 2 bits.  Likewise, (x % 8 ) will return the right-most 3 bits, and so on.

 

A quick way to find out if a number is odd or even is to use modulo (x % 2), which will return the right-most bit.  This should make sense intuitively because an even number is nothing but a value that divides cleanly by 2, and thus has zero remainder; and an odd number is one that has a remainder of 1.  So, the determining factor on whether a number is odd or even is its right-most bit, i.e., the remainder of a division by 2.

 

As with the regular IntyBASIC integer division operator, the modulo operator is optimized for powers of two.  For any other value, it performs a standard division by repeated subtraction, it just discards the quotient.  (Conversely, the standard division does the same thing, but discards the remainder.)

 

     -dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

1 minute ago, atari2600land said:

So gametimer%16>8 would check to see if the last four bits of gametimer equal 9 or more?

Yes.  That is another common use of the modulo operator: to cycle through a set of values using an ever increasing counter.

 

For example, if "gametimer" is always incrementing, but you need a counter from 0 to 15, then using (gametimer % 16) will do that.

 

    -dZ.

Link to comment
Share on other sites

For this challenge, I think it is particularly interesting to try different ways of expressing code and see how (much code) it is compiled into. For instance, I found that RANDOM() eats a lot of code space, while RAND doesn't so unless you really need multiple random numbers within the same frame, I would imagine that RAND:WAIT is a much better option than RANDOM.

 

I haven't even begun to study SCROLL, but I found that SCREEN produces relatively little code for what it accomplishes. As you saw by my early attempt, I decided to plot directly to #BACKTAB instead of PRINT AT but the difference might be marginal, in particular if you have other types of PRINT statements to make. Methods to algorithmically draw levels, i.e. every K:th card from pos M to pos N will surely come handy, not only for this purpose but as methods to use even when ROM is free.

Link to comment
Share on other sites

42 minutes ago, carlsson said:

For this challenge, I think it is particularly interesting to try different ways of expressing code and see how (much code) it is compiled into. For instance, I found that RANDOM() eats a lot of code space, while RAND doesn't so unless you really need multiple random numbers within the same frame, I would imagine that RAND:WAIT is a much better option than RANDOM.

The code for RAND is built into the "WAIT" (idle) loop, so it is a sunken cost.  RANDOM(), on the other hand, requires additional code to generate a new random number.

 

Quote

I haven't even begun to study SCROLL, but I found that SCREEN produces relatively little code for what it accomplishes.

The code for SCREEN is also baked into the internal run-time, as an assembly language routine called CPYBLK ("Copy Block," which is similar to the one from the SDK-1600 we used before, called MEMCPY).  The additional code needed to call SCREEN is in setting up the arguments for the call to CPYBLK, which coincidentally is the main overhead of the routine, and is the reason why repeated calls to SCREEN are very heavy on resources.

 

Quote

As you saw by my early attempt, I decided to plot directly to #BACKTAB instead of PRINT AT but the difference might be marginal, in particular if you have other types of PRINT

statements to make.

"PRINT AT" needs to combine the various potential arguments into a BACKTAB data word.  It also needs to update the current internal "cursor" it keeps.  Conversely, writing directly to #BACKTAB only needs to "poke" an already composed value into the appropriate address, and nothing more.  The latter would definitely be more compact in every case.

 

Quote

Methods to algorithmically draw levels, i.e. every K:th card from pos M to pos N will surely come handy, not only for this purpose but as methods to use even when ROM is free.

Those are the sort of techniques which will be very useful in this competition.  Basically, we will be grappling with the same issues that the original Mattel programmers faced:  how to build interesting screens and game mechanics that use as little code as possible.

 

Another interesting technique to try is to compute data tables on the fly, in memory, such as velocity data, animations, etc.

 

On the one hand, the main disadvantage we have with IntyBASIC is that it generates somewhat "generic" code that may not be optimized for space.  On the other hand, we have the added advantage of 40 years of industry experience on highly efficient techniques and algorithms, plus a growing community of very clever enthusiasts, some of them already experienced in these sort of constraints on other platforms.

 

    -dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

I would really like to see a 4k competition cart similar to the 2005 Minigame Multicart for the Atari 2600. I have been busy adding stuff to my 4k game, like sounds and other stuff. It's still at 3.05kb. I think the secret is not adding constants.bas. I'm using it as a guide rather than a program.

Link to comment
Share on other sites

42 minutes ago, atari2600land said:

I would really like to see a 4k competition cart similar to the 2005 Minigame Multicart for the Atari 2600. I have been busy adding stuff to my 4k game, like sounds and other stuff. It's still at 3.05kb. I think the secret is not adding constants.bas. I'm using it as a guide rather than a program.

Er ... that does not make any sense.  The "constants.bas" has absolutely no code in it.   In fact, all it does is define IntyBASIC constants using the keyword "Const," which does not generate any code.  The compiler keeps track of the constants, and replaces them with the actual values when generating assembly code, so something like this:

Rows = BACKGROUND_ROWS

will generate identical code to this:

Rows = 20

Both of them will induce the compiler to inject the following in its generated assembly:

  MVII #20, R0
  MVO  R0, var_ROWS

 

Notice that both result in hard-coded numeric values in the assembly code.  Constants are merely syntactic sugar as a convenience to the programmer reading the source code.

 

You should feel free to use the "constants.bas" in your 4K mini-program.  If something is keeping it from growing too big, it is definitely not that.

 

   -dZ.

Edited by DZ-Jay
  • Like 1
Link to comment
Share on other sites

1 hour ago, atari2600land said:

I think the secret is not adding constants.bas. I'm using it as a guide rather than a program.

Constants, variable declarations, and function definitions add nothing to the ROM size.  IntyBASIC just uses those during compilation to know what values to assign where.

Link to comment
Share on other sites

1 hour ago, atari2600land said:

Oh, OK. I thought it would generate more code due to how big it is and that it was code.

 

Nah, you're safe.  Go and use it in peace.  It's hard enough to keep the program short, it can get worse having to deal with cryptic "magic numbers." :)

Edited by DZ-Jay
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

So @DZ-Jay, is there going to be an actual contest this year?  Do you have the time to fill in for @nanochess

 

I'm getting real close to code completion on my Sasuke vs Commander game.  Then, I just need to test it from end to end and take a crash course on music and sound effects and it will be done.  I don't need a ton of sound, just a few short music interludes so I don't think it will be overly complicated.  It will be fun to tinker with sound and I bet I pick it up quickly, especially because Oscar has a whole chapter on it in his latest book.

 

If not, no big deal, I'm motivated to get this game in the can regardless. You won't recognize the gameplay in the final build from the alpha version I released. I've completely redone the enemy waves. It's no longer Sasuke Vs. Pumpkin Master....lol. Game is MUCH harder now and more like the original SNK coin-op. It's actually a bit harder than the original because there is less vertical space for the ninja to fly around in.

 

What a great experience making this game has been. I learned a whole lot, and kept rewriting the code to be better and better.  I still have SO much to learn though.

 

I really want the contest just so I can have the judges provide the constructive criticism.

Edited by Mik's Arcade
Link to comment
Share on other sites

2 hours ago, Mik's Arcade said:

So @DZ-Jay, is there going to be an actual contest this year?  Do you have the time to fill in for @nanochess

 

I'm getting real close to code completion on my Sasuke vs Commander game.  Then, I just need to test it from end to end and take a crash course on music and sound effects and it will be done.  I don't need a ton of sound, just a few short music interludes so I don't think it will be overly complicated.  It will be fun to tinker with sound and I bet I pick it up quickly, especially because Oscar has a whole chapter on it in his latest book.

 

If not, no big deal, I'm motivated to get this game in the can regardless. You won't recognize the gameplay in the final build from the alpha version I released. I've completely redone the enemy waves. It's no longer Sasuke Vs. Pumpkin Master....lol. Game is MUCH harder now and more like the original SNK coin-op. It's actually a bit harder than the original because there is less vertical space for the ninja to fly around in.

 

What a great experience making this game has been. I learned a whole lot, and kept rewriting the code to be better and better.  I still have SO much to learn though.

 

I really want the contest just so I can have the judges provide the constructive criticism.

To be honest, I cannot organise it right now.  The contest usually runs for about 6 months, so I thought that we could start it either in December or January.

 

      -dZ.

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