Jump to content

Photo

Killer Snakes (Channel F)


43 replies to this topic

#26 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Sat Jan 13, 2018 4:14 AM

The timer now works. At first I wanted it to count from 99 to 0, but I couldn't do it, so instead, I had it count from 00 to 99. And that's what it will do. I had some troubles because the timer kept stopping at 80, but I finally got the timer and game to stop at 99.



#27 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Sat Jan 13, 2018 6:41 AM

kevinvstomatoeslogo.png

What do you think?



#28 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Mon Jan 15, 2018 9:44 AM

The game now plays more like you'd expect a snake-eating-fruit game than ever. Please check the Kevin Vs. Tomatoes website download the game and give me feedback on it. My highest score is 18. What's yours?



#29 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Mon Jan 15, 2018 11:31 AM

A short YouTube video of the game in action:



#30 fdr4prez OFFLINE  

fdr4prez

    Stargunner

  • 1,605 posts

Posted Mon Jan 15, 2018 5:02 PM

An interesting concept.

 

You must eat all the fruit! No waste ;)

 

Is a two player game possible, where the player getting the entire fruit in a single bite, or the player getting the last bit of fruit gets the point?

 

Is a game like Intellivision's SNAFU possible?



#31 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Tue Jan 16, 2018 3:00 AM

Is a two player game possible, where the player getting the entire fruit in a single bite, or the player getting the last bit of fruit gets the point?

 

Is a game like Intellivision's SNAFU possible?

It might be possible for a two-player game. I don't know how many sprites the Channel F can have on the screen at once, so I went this route.

 

Maybe, although I don't know how the collision detection would work on it.



#32 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,293 posts

Posted Tue Jan 16, 2018 12:30 PM

OK, just to clear things up... actually I don't understand how you were even able to code this up without knowing much about the technical data of the Channel F.

Sprites??? Sadly, there are no "sprites" per se on the Channel F, only bitmap graphics. And the graphics memory is write-only, so you can't read it in order to determine if the snake has hit something. There's also no collision detection in hardware, which means the processor can't see what's actually in graphics memory at all, not even through small windows. As for colors, each scanline can have one of 4 possible 4-color (or 2-color) palletes, one of which is black and white and the other red/blue/green on grey, light blue or light green (if I remember right). Inside of that scanline, the dots can be freely set, that means you can have red, blue and green adjacent to each other.



#33 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Tue Jan 16, 2018 1:05 PM

When I said "collision detection," I meant how I would code it. I know there's no such thing for collision detection. I didn't know about the sprite/bitmap graphic thing. I am having quite a problem subtracting 4-bit numbers, since there doesn't seem to be an opcode for it, only for addition. I can make the beginning timer be 99, but I can't figure out how to subtract 1 from it. I can add 1 to it, but just can't subtract 1.



#34 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Wed Jan 17, 2018 9:52 AM

changes:

- timer now starts at 99 and moves down to 00.

- added sfx.

- eyes fixed so it's always a top view.



#35 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Thu Jan 18, 2018 11:47 AM

Looks like Kevin Vs. Tomatoes will get a cartridge release. Stay tuned for more details.



#36 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,293 posts

Posted Sat Jan 20, 2018 8:02 AM

I am having quite a problem subtracting 4-bit numbers, since there doesn't seem to be an opcode for it, only for addition. I can make the beginning timer be 99, but I can't figure out how to subtract 1 from it. I can add 1 to it, but just can't subtract 1.

 

In which form do you store the timer? This would determine exactly what to do.

It's true that there's no subtract command on the F8, but there are ways to get around this. In my code for the Video Brain which also has an F8 processor, I've coded it like that:

Let's say, we want to subtract the content of A from register 0 and store the result back into register 0. Since we can't subtract the number directly, we have to create a complement of it, add 1 to that and then add the result to register 0, which goes like follows:

 

 COM ;complement A

 INC ;increase A

 AS 0 ;add R0 to A

 LR 0, A ;write back the sum to R0

 

I hope this helps...



#37 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Sat Jan 20, 2018 10:29 AM

I ended up doing something similar e5frog suggested and then adding some code that makes sure it displays 9 instead of F.

    LIS  1
    COM
    INC 
    AS S
    LR S, A


#38 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,293 posts

Posted Sat Jan 20, 2018 11:48 AM

Did you really code it like that? Let's see what this actually does...

 

LIS 1 loads the accumulator with 1.

COM complements the 1 just loaded so it gets FE.

INC increments it so it gets FF.

AS S adds S to the accumulator and stores it there, so now the accumulator is S - 1.

LR S, A stores back the value so S has now decreased by 1, and the accumulator has the same decreased value.

 

However, if you're always subtracting 1 (and not more), you can use a decrement command instead, which is DS.

So you could write this shorter as:

DS S (decrements S)

LR A, S (you only need this if you also need the value to be in A afterwards)

Don't know what S refers to, though... do you write a definite register number instead of S, or is it another register I forgot?



#39 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Sat Jan 20, 2018 12:28 PM

I used "LIS 6" to subtract it by 6 to make F a 9.

S is a sign flag according to the VES wiki.



#40 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,293 posts

Posted Sat Jan 20, 2018 3:26 PM

Well, if you know the value beforehand, you can still write it shorter by loading the complemented value instead of loading 6 and then complementing it. So instead of

LIS 6 ;loads 6

COM ;complement it to $F9

INC ;adds 1 to make it $FA

 

you could write...

LI $FA ;load FA so 6 gets subtracted

 

This would be one byte and 2 lines shorter and probably faster to execute.

 

I'm still puzzled about that S though... according to the VES wiki S can't be used as an argument directly. It's only affected by certain operations. If the compiler accepts the S in this place, I wonder what it's compiled to.



#41 carlsson OFFLINE  

carlsson

    Metagalactic Mule

  • 6,647 posts
  • Location:Västerås, Sweden

Posted Tue Feb 6, 2018 5:17 PM

I'm a bit late with the feedback, and I fully understand that you can't read the screen on the Channel F which makes it extra difficult to tell which parts you have already moved on, but it would enhance the game greatly if you came up with an alternative way to determine if the snake ran into itself. I'm not sure how that would be done in this environment though. It strikes me that e.g. Tetris manages to detect full rows for both players which suggests either there is RAM somewhere you could use, or there is an alternative way to do it.



#42 atari2600land OFFLINE  

atari2600land

    Channel F Viewer

  • Topic Starter
  • 11,173 posts
  • Location:Salem, Oregon

Posted Wed Feb 7, 2018 4:06 AM

Yeah, I know. That was something I would have liked as well, but I don't think there is a way I could do it. And if there is, I probably wouldn't understand any of it.



#43 carlsson OFFLINE  

carlsson

    Metagalactic Mule

  • 6,647 posts
  • Location:Västerås, Sweden

Posted Wed Feb 7, 2018 4:53 AM

The VES Wiki writes:
 

Schach RAM is a two-kilobyte block of extra RAM used in cartridge #20, Schach (Chess) for the Saba Videoplay. This consists of four 2114 chips (1K x 4 bits), and it starts at memory location $2800, and ends at $2FFF. This RAM is different than using the registers or VRAM, because it can be access directly in memory using the data counter.

Since most homebrew development carts are made from Schach cartridges, and MESS emulates it, modern homebrews can safely use it.


http://channelf.se/v...itle=Schach_RAM

It seems that Peter Trauner's Tetris game uses this area at $2800:
http://channelf.se/v...Homebrew:Tetris

I suppose making physical cartridges would require those to have the same PCB as the Chess game, or newly made ones. Whether that is financially and practically meaningful is another matter, but adding 2K of all purpose RAM would let you do a lot more.

Edited by carlsson, Wed Feb 7, 2018 4:57 AM.


#44 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 785 posts
  • Good.
  • Location:Sweden

Posted Sat May 19, 2018 6:37 AM

Hey there.
Adding 2k of RAM (like Pac-Man and the Multi-Cart has) would cost less than $5 more per cartridge than what was spent on the current Kevin vs Tomatoes. There's more information about the physical K. vs T. cart in the Multi-Cart thread.




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users