Jump to content

Photo

Snake Plissken - game released

game assembler flash

132 replies to this topic

#1 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • 3,956 posts
  • Location:Denmark

Posted Tue Mar 29, 2016 2:25 AM

Cartridge binary game download and short manual in post #71

EA5 game download in post #96

Desktop browser version at Newgrounds.com

Cartridges available at Arcadeshopper.com


 
- - - - -

 
Origin
https://en.wikipedia...ke_(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).
 
Attached File  hellrc.bin   8KB   24 downloads
 
hellr.png


Edited by sometimes99er, Thu Oct 27, 2016 12:03 PM.


#2 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Tue Mar 29, 2016 8:51 AM

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.

 

Attached File  snakc.bin   8KB   24 downloads

 

snakepl.png



#3 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Tue Mar 29, 2016 12:16 PM

More than a year ago I wrote an XB version. It looks the same and it plays okay.
 
100 CALL CLEAR::CALL SCREEN(2)
! FRAME PATTERNS
110 CALL CHAR(33,"FF")
112 CALL CHAR(34,"0000000000000302000000000000FF")
114 CALL CHAR(36,"00000000000080800202020202020202808080808080808003")
116 CALL CHAR(40,"8")
! NUMBER PATTERNS
120 CALL CHAR(48,"FF007CC6C6C6C67CFF003070303030FCFF007C067CC0C0FEFF007C061C06C67C")
122 CALL CHAR(52,"FF001C3C6CCCFE0CFF00FCC0FC06C67CFF007CC0FCC6C67CFF00FE060C18303")
124 CALL CHAR(56,"FF007CC67CC6C67CFF007CC67E06C67C")
! LETTER PATTERNS
130 CALL CHAR(67,"FF007CC0C0C0C67C",69,"FF00FCC0F8C0C0FE")
132 CALL CHAR(72,"FF0031313F313131FF009E8C8C8C8C9E",79,"FF007CC6C6C6C67C")
134 CALL CHAR(82,"FF00FCC6FCD8CCC6FF007CC07C06C67C")
! SNAKE PATTERN
140 CALL CHAR(96,"FEFEFEFEFEFEFE")
! DISPLAY FRAME
200 CALL HCHAR(24,2,33,30)::CALL HCHAR(1,1,34)::CALL HCHAR(1,2,35,30)
202 CALL HCHAR(1,32,36)::CALL VCHAR(2,1,37,22)::CALL VCHAR(2,32,38,22)
204 CALL HCHAR(24,1,39)::CALL HCHAR(24,32,40)
! DISPLAY SCORES
210 DISPLAY AT(24,3):"SCORE!000000!!!HI!000000";
! SHOW IT ALL
220 CALL SCREEN(15)::HI=0
! INIT
300 L=10::C=22::LN=L::CN=C::DX=0::DY=0::SC=0
! MAIN
310 CALL HCHAR(L,C,96)::CALL JOYST(1,X,Y)
312 IF X<>0 THEN DX=X/4::DY=0::Y=0
314 IF Y<>0 THEN DX=0::DY=-Y/4
316 IF DX*2+DY=0 THEN 310
! MOVE
320 C=C+DX::L=L+DY::CALL GCHAR(L,C,G)::SC=SC+1::IF G=32 THEN 310
! CRASH
330 CALL SOUND(-500,-7,0)::SC$="00000"&STR$(SC)::SC$=SEG$(SC$,LEN(SC$)-5,6)
332 DISPLAY AT(24,9):SC$; ::FOR C=2 TO 31::CALL VCHAR(2,C,32,22)::NEXT C
334 IF SC>HI THEN HI=SC::DISPLAY AT(24,21):SC$; ::CALL SOUND(-199,3000,0)
336 GOTO 300
  


#4 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Tue Mar 29, 2016 10:45 PM

In December as bonus material for the Nonogram cartridge, I added a message saying “Get ready” and a short fanfare.
 

Attached File  snakec.bin   8KB   19 downloads

 

 



#5 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Thu Mar 31, 2016 2:27 PM

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.

 

snakepl005.png

 

Attached File  snake.dsk   90KB   16 downloads

Attached File  snake.ea3   15.37KB   11 downloads (program name: snake)

Attached File  snake.ea5   4.38KB   17 downloads

Attached File  snake.rpk   2.27KB   11 downloads

Attached File  snakec.bin   8KB   18 downloads

 

 



#6 unhuman OFFLINE  

unhuman

    Stargunner

  • 1,150 posts
  • Location:Vienna, VA

Posted Fri Apr 1, 2016 4:34 PM

Wondering aloud if you could speed up the game if you skipped the GCHAR and double-tracked where you've been in an array.



#7 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Fri Apr 1, 2016 9:24 PM

 

 

snakepl005.png

 

 

I LOVE THIS GAME!  It's addicting as hell though!



#8 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Sat Apr 2, 2016 2:33 AM

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 by sometimes99er, Sat Apr 2, 2016 1:42 PM.


#9 Ksarul OFFLINE  

Ksarul

    River Patroller

  • 4,212 posts

Posted Sat Apr 2, 2016 9:46 AM

And these worm games are some of my favorite computer games in general for some reason, so all is good here!  :)



#10 sparkdrummer OFFLINE  

sparkdrummer

    Dragonstomper

  • 777 posts
  • Status? I don't need no stinkin' status!
  • Location:Phoenix,Arizona

Posted Sat Apr 2, 2016 10:21 AM

+1 on liking snake/worm games. I've got a bunch of them.

#11 Opry99er OFFLINE  

Opry99er

    Quadrunner

  • 8,261 posts
  • Location:Cookeville, TN

Posted Sat Apr 2, 2016 6:47 PM

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.

#12 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Sun Apr 3, 2016 3:07 AM

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

 

snakepl006.png

 

Attached File  snake.dsk   90KB   17 downloads

Attached File  snake.ea3   15.53KB   11 downloads (program name: snake)

Attached File  snake.ea5   4.38KB   16 downloads

Attached File  snake.rpk   2.31KB   14 downloads

Attached File  snakec.bin   8KB   21 downloads

 



#13 Vorticon OFFLINE  

Vorticon

    River Patroller

  • 2,805 posts
  • Location:Eagan, MN, USA

Posted Sun Apr 3, 2016 10:39 AM

It's amazing how such a simple game can be so friggin addictive! I love it  :thumbsup:  :thumbsup:  :thumbsup:

Is this the final version?



#14 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Sun Apr 3, 2016 11:31 AM

It's amazing how such a simple game can be so friggin addictive! I love it  :thumbsup:  :thumbsup:  :thumbsup:

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 by sometimes99er, Sun Apr 3, 2016 11:35 AM.


#15 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Sun Apr 3, 2016 2:30 PM

 

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

Attached Files



#16 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Sun Apr 3, 2016 3:05 PM

Yep... it's harder to get a high score.

Attached Files

  • Attached File  Tuff.JPG   37.45KB   1 downloads


#17 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,822 posts
  • HarmlessLion
  • Location:BUR

Posted Sun Apr 3, 2016 8:21 PM

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


Single 8k programs don't care if the cartridge is inverted or not, they don't bank. :)

#18 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Sun Apr 3, 2016 11:38 PM

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

 

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 ? :)

#19 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Sun Apr 3, 2016 11:43 PM

 

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.



#20 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Sun Apr 3, 2016 11:53 PM

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 ?  :cool:

 

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 by sometimes99er, Mon Apr 4, 2016 12:26 AM.


#21 sometimes99er OFFLINE  

sometimes99er

    River Patroller

  • Topic Starter
  • 3,956 posts
  • Location:Denmark

Posted Mon Apr 4, 2016 12:19 AM

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

 

snakepl006s.png

 

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 by sometimes99er, Mon Apr 4, 2016 5:12 AM.


#22 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,822 posts
  • HarmlessLion
  • Location:BUR

Posted Mon Apr 4, 2016 6:35 AM

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

#23 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Mon Apr 4, 2016 10:35 AM

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



#24 Tursi OFFLINE  

Tursi

    River Patroller

  • 4,822 posts
  • HarmlessLion
  • Location:BUR

Posted Mon Apr 4, 2016 7:30 PM

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

#25 --- Ω --- OFFLINE  

--- Ω ---

    TI-Runner

  • 10,600 posts

Posted Mon Apr 4, 2016 8:43 PM

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!  :thumbsup:

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!  :)







Also tagged with one or more of these keywords: game, assembler, flash

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users