Jump to content


New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

16 Good

About NoLand

  • Rank
    Space Invader

Contact / Social Media

Profile Information

  • Gender
  • Location
    Vienna, Austria

Recent Profile Visitors

1,417 profile views
  1. Near label "SkipReverseDuckXVelocity" you are missing a "#", what you mean is probably: ldx DuckState cpx #STATE_DUCK_FLYAWAY ... As is (cpx STATE_DUCK_FLYAWAY), you are comparing DuckState to the contents of address $02, which happens to be the collision register CXP0FB. Edit: This is really a common error and hard to spot, especially in your own code (this is a bit like proof reading your own text). As you are already using upper-case constants for those values, setting up a regular expression search in your text editor to find any of those missing "#" may be a good idea. E.g., \sSTATE_\w* meaning, we are searching for any words starting with "STATE_" and headed by a white-space character (like a blank). Any hit should indicate one of those hard to catch errors. (Alternatively, instead of using a regular expression, just search for " STATE_" [mind the blank!] with word-matching disabled. The regular expression is essentially the same, but matches both heading blanks and tabs. Moreover, you may extend it to match any of your constants at once, like \s(STATE|VALUE|POS)\w* ...)
  2. As a historical note, this is one of the very first computer games ever, compare Kalah on the PDP-1. https://www.computerhistory.org/pdp-1/_media/pdf/DEC.pdp_1.1961.102645673.pdf (The game was done at MIT and is commonly attributed to 1959, but the PDP-1 didn't arrive at MIT before fall of 1961.)
  3. Maybe using a binary tree as you go along in your logic and then just flatten the tree? However, you'd have to reserve some memory for this (assuming the tree may extend from the root-node to either side in its entirety) and traversing the tree may be just as expensive.
  4. First, these really are just switches with just a bit of conventional meaning associated to them by the markings on the console. The program may "ask" the TIA chip for the state of the switches (as stored in one of the registers) and act to its liking, even the reset switch isn't hardwired in any way. (Nothing but convention hinders you from [mis]using the reset switch, say, as the fire button in your game.) And no, there's no way to preset the TIA register used for this, since it's read-only. A game starts from a fixed address in the cartridge ROM, which will direct the game to its initialization routine. There, it will probably wipe the little RAM, there is, in order to start from a known state (so we already lost any information that might be in there). Then, it probably proceeds to the title screen, where it may read the switch register and adjust the value of a few RAM addresses based on the results. This is probably, where the select switch will be read with the game cycling through its options accordingly. Some switches will be even checked every frame during the game, like the reset switch or the difficulty switches (depending on the game). – So, each program will handle this differently on an individual basis and it will initialize the RAM on startup or just write directly to RAM to take note of the current state of a console switch. Edit: The register for the switch states is, of course, in the RIOT chip (PLA).
  5. This would work as a helper to adjust static options, like by the BW and difficulty switches, but not for select, where the game has to keep track of the state as the users is cycling through options. (There is no API for options, programs are just checking the hardware to determine the state of the switches. E.g., the game starts with option 0 for select and then checks the state of the select switch every frame and increments an internal count, if the switch is active.)
  6. For a simple, web-based VCS sprite editor in JavaScript see https://www.masswerk.at/rc2018/04/TinySpriteEditor/. The "Tiny 8-Bit Sprite Editor" generates assembler code (for copy and paste) on the fly and accepts common assembler code as input, both in normal and in reversed byte order. Else, there are just a few basic commands, like draw/paint, move pixels, append lines.
  7. Hi, I just found out about the nomination of "Refraction" – thanks a lot for honoring the humble game! Norbert
  8. I tried to provide a bit of an analysis here: http://www.masswerk.at/rc2018/04/10.html (Includes a timing diagram showing when values are passed/copied to any registers.)
  9. Thank's again, your effort is much appreciated! Since it's about sharing, here's in return my amateurish version of the VCS block diagram for public use (It's close to what is found in the TIA-1A manual and in the "Reconstructed Stella Programmer's Guide): http://www.masswerk.at/rc2018/04/images/e01-stella-block-diagram.png
  10. Thanks! :-) It's worth mentioning that it was merely meant to allow bystanders to follow the project and not as a general tutorial. So it covers only what may be of a more general interest (what ever this may mean for readers who are already actively into retro computing in a way or another) and what arose in the course of that particular project. Notably, this was also my first attempt on Atari 2600 programing and I may not claim any higher expertise. (On the other hand, I tried to convey what I had learned and to provide some resources. If this is found useful or of service to others, I'm glad.)
  11. It should be mentioned that the diagram is a copy from AtariAge, "2600 Programming For Newbies, Part 2" (compare the link provided with the image), http://atariage.com/forums/topic/29326-session-18-asymmetrical-playfields-part-2/ I'm not sure, if you are the original source. If so, thanks for producing the diagram! I think, it serves the purpose quite well. (author of that page / mass:werk, here)
  12. This might be a tricky one: When the game is running in the first level, it reads"Computer Space" at the lower left corner. I don't know anything about Tempest 4000, but could it be that names of popular retro systems and arcade games are used as level designators? (Full disclosure: I'm very sceptic about this whole project.)
  13. Was nice to see you playing my little game, among all those other fantastic homebrews. Just a suggestion: While it's a nice idea to dive into the games without any attention to instructions as in, "hey, I just found this cartridge," you're also systematically missing some of the fun. (A reoccurring theme.) Especially, as it's definitely hard to include extensive instructions in the program… So, if a game transcends the most basic, obvious game mechanics, or does provide some settings by console switches, you're already at a substantial disadvantage.
  14. Great! Beta testing done live... :-) I seriously hope, it's fun. May your joysticks never break!
  15. Sorry to say so, no. Quoting the blog, the general idea is about "Not another of the usual video games, but going back to the roots, when video games were about friends and family gathering in front of a TV set in cheerful exaltation. So it would be about two players facing directly in a noble, abstract competition, something about skill but also a bit of the unexpected for excitement." I guess, a single player version would be rather pointless.
  • Create New...