Jump to content
  • entries
    53
  • comments
    536
  • views
    68,387

19x19 update


Zach

892 views

Three years ago I would not have thought this kernel was possible. :ponder:

 

post-2432-1103691573_thumb.jpg

 

There is no game logic at this point. The program just allows three players to place their stones on the board, all using the left joystick.

 

Note that the cursor does not move into the top row yet. There is certainly room for improvement, but this is good enough to show how a Go-Moku kernel would work. The next steps will be to implement the top row, make the cursor more responsive to the joystick, and to put in diagonal movement. I would have done more before releasing it, but I need to get back to Four-Play.

 

post-2394-1051233603_thumb.jpg

8 Comments


Recommended Comments

Wow. Very impressive. I wonder if this game might benefit some from the EEPROM cart once I get that working. The EEPROM isn't terribly fast, but it would allow for some semi-scratchpad space if used in moderation. Even the board itself requires a rather large amount of RAM to store, so doing any sort of backtracking algorithm may be difficult.

Link to comment

Hi Zach,

 

I've just started programming the 2600 and I've been learning a lot by loading up games, disabling players, missiles, playfields etc and seeing how different tricks were acomplished.

 

I was blown away when I ran your demo - and tried to figure out how you did it. But you dont seem to use any player/playfields etc. Is it all done with backgrounds?! I tried to step through it with the Stella debugger... but that just made things more confusing... why does it sit on JMP $0080 for most of the drawing?

 

Any hints?! :)

Link to comment

Wow. Very impressive. I wonder if this game might benefit some from the EEPROM cart once I get that working. The EEPROM isn't terribly fast, but it would allow for some semi-scratchpad space if used in moderation. Even the board itself requires a rather large amount of RAM to store, so doing any sort of backtracking algorithm may be difficult.

Thanks. Yeah, extended memory would really help. As for the EEPROM, you can probably answer your question better than I. Of course the board data and other information change frequently during the backtracking.

 

The way I see it, these are the options, all of which have pros and cons:

(in rough chronological order)

  • Make the best of the existing RAM and registers
  • Supercharger
  • Superchip
  • 3E bankswitching
  • 4A50
  • EEPROM

Link to comment

Hi Zach,

 

I've just started programming the 2600 and I've been learning a lot by loading up games, disabling players, missiles, playfields etc and seeing how different tricks were acomplished.

Hi There,

 

Studying past games is a great way to start learning how the VCS works. A good way to approach this is to start with the 70's games and work your way up to the homebrews, which use the most advanced techniques.

I was blown away when I ran your demo - and tried to figure out how you did it. But you dont seem to use any player/playfields etc.

Thanks. I'm actually using everything but the ball. Disabling objects does not work on this kernel because I only draw them once at startup. After that all I do is recolor them. When you enable/disable an object in an emulator it only updates when the object itself is updated. (It took me a long time to figure this out.)

 

Here are the objects that draw the 19 pieces. The PF fills the gaps in between.

BK P0 BK P1 BK P0 BK P1 BK P0 BK P1 BK M0 BK M1 BK M0 BK

 

I tried to step through it with the Stella debugger... but that just made things more confusing... why does it sit on JMP $0080 for most of the drawing?

Because JMP $0080 moves the program counter into RAM, where the code can be modified by the program itself. This is where I set the colors, either STA for light brown (background), STY for white, STX for blue, or SAX for black. I don't think the Stella debuger is able to show code in RAM yet, but you can see the numbers from $0080 to $00a6 and watch them change. They represent the following code (before it is modified):

 

  sta COLUP0; 2nd piece	  
  sta COLUP1; 4th		  
  stx COLUBK; 3rd		  
  sta COLUP0	; 6th	 
  sax COLUBK	 ; 5th   
  sta COLUP1	 ; 8th	 
  stx COLUBK	 ; 7th	  
  sta COLUP0	 ; 10th		
  sty COLUBK  ; 9th		  
  sta COLUP1  ; 12th		
  stx COLUBK	 ; 11th		   
  sta COLUP0	 ; 14th		
  stx COLUBK	 ; 13th			
  stx COLUBK	 ; 15th			 
  sta COLUP1	 ; 16th			 
  stx COLUBK	 ; 17th
  sta COLUP0	 ; 18th
  sax COLUBK	 ; 19th
  jmp returnFromRAM

Link to comment

I just took another look at this and it really is a freakin amazing kernel.

Thanks!

You could do a lot of things with it.

Well, for starters it was the inspiration for the Toyshop Trouble title screen, which actually became simpler because the lights did not need to blink independently.
Link to comment
Guest
Add a comment...

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