sometimes99er Posted March 29, 2016 Share Posted March 29, 2016 (edited) snakec.bin - - - - - Originhttps://en.wikipedia.org/wiki/Snake_(video_game) Back in 2005 I did a routine for scrolling a line of text. Added a few bits to make a demo. It scrolls the text and reacts when you press fire, but otherwise stalls / stalled (wasn't brought any further). Edited February 26, 2020 by sometimes99er 4 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted March 29, 2016 Author Share Posted March 29, 2016 Then in 2007 it was time for another snake demo, or could we call it a game. The player controls a square on a bordered plane. As it moves forward, it leaves a trail behind, resembling a moving snake. In this game, the end of the trail is in a fixed position, so the snake continually gets longer as it moves. In another common scheme, the snake has a specific length, so there is a moving tail a fixed number of units away from the head. The player loses when the snake runs into the screen border or trail. 3 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted March 29, 2016 Author Share Posted March 29, 2016 (edited) More than a year ago I wrote an XB version. It looks the same and it plays okay. Edited April 5, 2018 by sometimes99er 2 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted March 30, 2016 Author Share Posted March 30, 2016 In December as bonus material for the Nonogram cartridge, I added a message saying “Get ready” and a short fanfare. 2 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted March 31, 2016 Author Share Posted March 31, 2016 And now for a few changes. Snake starts out with a length of 5 squares. Snake grows 3 squares each time you eat an apple. It travels rather slow. But don't worry, - some type of speedup will lurk around in future updates. (program name: snake) 6 Quote Link to comment Share on other sites More sharing options...
unhuman Posted April 1, 2016 Share Posted April 1, 2016 Wondering aloud if you could speed up the game if you skipped the GCHAR and double-tracked where you've been in an array. 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 2, 2016 Share Posted April 2, 2016 I LOVE THIS GAME! It's addicting as hell though! 2 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 2, 2016 Author Share Posted April 2, 2016 (edited) Ah, thanks for feedback. The downloads and likes are of course very nice, but I was wondering if I was almost going to be talking to myself. Wondering aloud if you could speed up the game if you skipped the GCHAR and double-tracked where you've been in an array. No GCHAR. With the XB version thrown in and the latest one being rather slow, I may have confused things.It's written in assembly, so it can actually fill the screen in less than a handful of frames with current algorithm - and yes, it's using an array. The old assembly version were set to move once per 4 frames, and this one is set at once per 8 frames. Speed increases will be coming up soon. I LOVE THIS GAME! It's addicting as hell though! Thanks. It's one of those typical game projects to do when you've done the initial Hello World. Edited April 2, 2016 by sometimes99er Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted April 2, 2016 Share Posted April 2, 2016 And these worm games are some of my favorite computer games in general for some reason, so all is good here! 1 Quote Link to comment Share on other sites More sharing options...
sparkdrummer Posted April 2, 2016 Share Posted April 2, 2016 +1 on liking snake/worm games. I've got a bunch of them. 1 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted April 3, 2016 Share Posted April 3, 2016 Snafu for the Intellivision is probably my favorite in the genre. Game variation 3 is our favorite. Anyone who hasn't played it should give it a shot. This one is looking promising!!! Very cool Look forward to seeing it progress. 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 3, 2016 Author Share Posted April 3, 2016 Thanks for feedback to all. Snafu for the Intellivision is probably my favorite in the genre. Game variation 3 is our favorite. Anyone who hasn't played it should give it a shot. Snafu looks good. I like the effect of the sprites traveling above the character progression. Computer controlled snakes is also a nice idea. This update includes: Speed increase for every 4 apples eaten. Scoring is now 5 points per apple. Color, graphic and sound changes. The speed is 8 frames per move (slow) to begin with, increase is 1 frame per move, and it ends at max of 2 frames per move (very fast). (program name: snake) 4 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted April 3, 2016 Share Posted April 3, 2016 It's amazing how such a simple game can be so friggin addictive! I love it Is this the final version? 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 3, 2016 Author Share Posted April 3, 2016 (edited) It's amazing how such a simple game can be so friggin addictive! I love it Is this the final version? Thanks. No, it's not the final version. I think I'll be adding things and adjusting along the way. Right now I'm thinking levels, challenges, power-ups and -downs, keys, obstacles, moving obstacles, enemies, teleports ... At the same time derailing with a handful of other games. And only an hour to spend here and there. Edited April 3, 2016 by sometimes99er 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 3, 2016 Share Posted April 3, 2016 No, it's not the final version. Glad to hear that! It would be interesting to have a random rotten apple that kills the snake. One problem I've found standardizing to an UberCart for everything, many single proggies such as this don't come available for the non-inverted 512K chip. 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 3, 2016 Share Posted April 3, 2016 Yep... it's harder to get a high score. 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted April 4, 2016 Share Posted April 4, 2016 One problem I've found standardizing to an UberCart for everything, many single proggies such as this don't come available for the non-inverted 512K chip. Single 8k programs don't care if the cartridge is inverted or not, they don't bank. 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 4, 2016 Author Share Posted April 4, 2016 One problem I've found standardizing to an UberCart for everything, many single proggies such as this don't come available for the non-inverted 512K chip. Single 8k programs don't care if the cartridge is inverted or not, they don't bank. Thanks. Yes, I thought that, and yet I still don't quite understand the original statement (/question). Is there a download format missing ? Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 4, 2016 Share Posted April 4, 2016 Thanks. Yes, I thought that, and yet I still don't quite understand the original statement (/question). Is there a download format missing ? I *believe* I need it in non-inverted format to program into a AT49F040 512K chip for the UberCart. I tired the snakec.bin image, but nada happened. 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 4, 2016 Author Share Posted April 4, 2016 (edited) I *believe* I need it in non-inverted format to program into a AT49F040 512K chip for the UberCart. I tired the snakec.bin image, but nada happened. If you place the 8K binary in every bank or maybe just in the first and last bank, then I think it should work ? As Tursi said, 8K programs do not switch banks, so it is as it is, - inverted and non-inverted does not exist in their world. Larger programs has one 8K after the other, and you can switch the order, hence inverted and non-inverted. A 32K program would have the order of 1, 2, 3 and 4 or, inverted, 4, 3, 2 and 1. The reason for the 8K chucks / banks is due to the memory layout of the TI, where ROM on cartridge is (normally) available only at >6000 thru >7FFF (8K), - larger programs has to switch in banks in this 8K area. Edited April 4, 2016 by sometimes99er 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 4, 2016 Author Share Posted April 4, 2016 (edited) Yep... it's harder to get a high score. I've gotten as far as 125 points a few times. The speed after 120 points is a bit insane (and it's the maximum speed even if you get further). So after you score 20 points (4 apples eaten), the speed is increased from 1 to 2, - the number of frame updates between moves are lowered from 8 to 7, - and the milliseconds between moves are lowered from 133 to 117 (same thing just expressed in 3 different ways). The change in percent or the relative increase is probably perceived as being more and more significant. I think I'll leave out speed 7 from future versions. The missions will also add other aspects of difficulty, so this speed 7 makes it ... inhuman. On the other hand, there are people out there with good reflexes. Edited April 4, 2016 by sometimes99er 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted April 4, 2016 Share Posted April 4, 2016 I *believe* I need it in non-inverted format to program into a AT49F040 512K chip for the UberCart. I tired the snakec.bin image, but nada happened. Sometimes did a good job explaining what inverted versus non-inverted means -- for an 8k program the inverted versus non-inverted image would be 100% identical. The question is WHERE on that 512k chip are you storing the program, are you using a menu program, and what's the startup bank on your cartridge? To be more clear, the above questions are the questions you need to answer to yourself when you make a cartridge with more than 8k available (whether you are using more than that or not). The TI can only ever see 8k at a time -- the analogy (and origin of the term "paging memory", which unfortunately we aren't using, we use "banking", but it is the same thing) -- is a book. You can only see the page that you currently have open. The book itself has many more pages (and so much more information or story), but you can't see the other pages unless you turn the current one. In the case of the TI - the cartridge port can see one 8k page at a time. It turns the pages by writing to the cartridge ROM -- since it's ROM you can't actually change it that way, but the hardware sees the "erroneous" write and interprets it as a request to turn the page. The page it turns to is dependent on the exact address written -- certain bits from the address are captured and stored as the new page number. On "inverted" boards the bits are flipped from 1 to 0, and 0 to 1... on "non-inverted" boards they are not. This is the "379" and "378" - they are fully named 74LS379 and 74LS378 (they are the smaller chip on the board). This is where "non-inverted" versus "inverted" comes in - a concept that we really only have because of the original way Extended BASIC ROMs were distributed. (Otherwise we'd probably only ever have built "non-inverted". ). "non-inverted" would be how we read books in the Western world. When we ask for page 1, the book is opened to what we would consider the first page. "Inverted", however, starts at the back of the book, so when we ask for page 1, it opens the book "backwards" and starts at the LAST page. Note that this causes an important distinction: with the "non-inverted" layout, page '1' is predictable, you always know exactly where it is relative to the beginning of the ROM. But with "inverted" layout, the "last" page depends on how big the EPROM is. A 16k EPROM only has 2 pages. A 512k EPROM has 64 pages. So on an inverted cartridge, if you have a program that uses pages 1 and 2, you need to be more careful about where they end up in the final image than on a non-inverted cartridge, where you don't really need to know how big the EPROM will be. The third question was 'startup bank'. The hardware that we use for remembering the current page (or bank) is very old electronics design, and one of the things it does NOT have is a guaranteed startup state -- it can start with any random value, in theory. In practice we've found over hundreds of samples that almost all of them either start up with all '1's or all '0's, meaning that they start up selecting either the first or the last page of the EPROM. (We don't need to worry about whether it's inverted in the startup case). The only way to know the startup bank is to try it. I released a test program for it, but you can just as easily burn a different program into each bank and see which one starts up. It's important to run a few power cycles to make sure it's consistent (soft reset, and even a hardware reset button, will not affect the page selection chip). Once you have those three questions understood, you can build your ROM. Put whatever you want to start up in the startup bank (be it menu or program), and that should work. If an 8k program is the ONLY program you are storing, just copy it to itself repeatedly till you have 512k (which would be 64 copies!!) Then it is guaranteed to be in the startup bank! But more reasonably you probably want to make a big multicart with lots of ROMs, just drop the multicart menu I wrote at the first and last bank (covers most of the cases) and you can throw every 8k ROM you find in the middle. 5 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 4, 2016 Share Posted April 4, 2016 Tursi, That was a great post! So great in fact, I printed it off to digest in full later. You have a knack of explaining things that the un-enlightened can understand. (Trust me I know.) Until now, I just grabbed pre-made 512K images made by TI gods like you, Rasmus and Stuart, and simply pressed a button to burn them in... no fuss, no muss and considered myself lucky.. It was so easy even this caveman could do it. I guess I'm entering a new phase where your post creates even more questions. Questions like, "HOW would I select which bank to put an 8K file into?" That seems like the best solution, at least to me at my level of understanding. Or the other alternative, "How would I copy a program into itself 64 times?" I imagine there are detailed instructions somewhere that I've overlooked, written in a style even a complete neophyte can comprehend? I guess I've arrived at the point in time, that I need to find the time learn it and to do it myself. And speaking of time, I'm out of it for right now and have to leave. (Dammit, always when it gets good.) Quote Link to comment Share on other sites More sharing options...
Tursi Posted April 5, 2016 Share Posted April 5, 2016 For duplicating an image, I just use the command prompt in Windows and the COPY command. It has the ability to concatenate two files by simply using a plus sign. One annoyance is that the command line infers you need to add a "/b" switch for binary. I've not seen it matter, but I do it for safety, cause the last thing I want to troubleshoot is a character being deleted or changed for a presumed text file end of line. For instance, this is how I would get that 8k program to 512k (and every step along the way): copy /b snakec.bin + /b snakec.bin /b snake16k.bin copy /b snake16k.bin + /b snake16k.bin /b snake32k.bin copy /b snake32k.bin + /b snake32k.bin /b snake64k.bin copy /b snake64k.bin + /b snake64k.bin /b snake128k.bin copy /b snake128k.bin + /b snake128k.bin /b snake256k.bin copy /b snake256k.bin + /b snake256k.bin /b snake512k.bin Note the lack of plus sign specifies the target file. A little hard to read! You can also put more than two on a single line, I just find it quick to do that sequence (hooray for powers of 2!), using up-arrow and editing the line. And that's also how you would define the layout of the cartridge. For sake of simplicity, let's assume we're making a 32k EPROM, and we have four programs: MULTICARTC.BIN, SNAKEC.BIN, ZMOTIFC.BIN, and MINEC.BIN. So we need to answer our three questions: Where on the chip? We have 32k, so there is room for 4 programs, and we have four. We're not fussy about order except that the multicart menu needs to be in the startup bank. All of our programs are 8k, so we don't really care if it is an inverted board or not (it only affects the order of 8k segments in a single program). And our startup bank, we have determined by experimentation, is the last one. copy /b snakec.bin + /b zmotifc.bin + /b minec.bin + /b multicartc.bin /b mycart32k.bin mycart32k.bin will then contain a binary file ready for EPROM with the four programs in that order. There is a HUGE gotcha with using COPY -- it does not care a whit about how big the files are or what your eventual goal is. The files must be /exactly/ 8192 bytes for this to work. Most programs are shipped appropriately padded, but make sure you check before you start. 4 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted April 5, 2016 Share Posted April 5, 2016 For instance, this is how I would get that 8k program to 512k (and every step along the way): copy /b snakec.bin + /b snakec.bin /b snake16k.bin copy /b snake16k.bin + /b snake16k.bin /b snake32k.bin copy /b snake32k.bin + /b snake32k.bin /b snake64k.bin copy /b snake64k.bin + /b snake64k.bin /b snake128k.bin copy /b snake128k.bin + /b snake128k.bin /b snake256k.bin copy /b snake256k.bin + /b snake256k.bin /b snake512k.bin FANTASTIC! Thanks again Tursi! I think I'll have a few hours of time on Wednesday to play around, so I printed this up too and will give it a shot! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.