Jump to content


New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

52 Excellent

About Schlortt

  • Rank
    Space Invader

Recent Profile Visitors

3,059 profile views
  1. I am in the US and received #140 today. Looking forward to digging into it.
  2. I agree with Rybags, obstacles add great complexity. One of my current projects is to add AI to 2600 Combat. Biplanes, Jets and tanks with open playfields were easy the tank levels with mazes were challenging to create and I still don't have it where I want it. For War Room, the AI was pretty simple. A few parameters in the game: - No obstacles but there is a green slime that starts in the middle and grows and the bullets are not unlimited - Bullets are not unlimited and bullet packs appear randomly - Game is broken into rounds where you have to outlast your opponent (IIRC, everyone gets ten hits.) This is from memory so it may not be perfectly accurate but AI Priorities change based on game state: Grabbing bullets are generally the first priority and this changes things up quite a bit and works to randomize things a bit. If AI has no bullets, it flees from the opponent If the opponent has no bullets, it gets more aggressive in attacking. If the AI has a lot of life left and the opponent is down to almost no life left, the AI gets more aggressive in attacking. Shooting: AI only shoots if it is lined up with the opponent Horizontally, Vertically or Diagonally. This shot is always based on where the opponent is and doesn't anticipate where the opponent will be. One thing that I have never figured out is that Player 2 is much better than Player 1 even though I think the logic is exactly the same. Search for "AI logic" in the assembly code... It isn't commented very well.
  3. Wow! I hadn't seen this. I absolutely love the play mechanic and animation of the protagonist. I think the simplest way to make it more arcade style is what Rybags suggested: Hitting an enemy vertically during your transition destroys them. SMB's mechanic is actually quite simple: if you are falling and hit an enemy, they get crushed. If you are moving up or not moving vertically, Mario takes a hit. As far as "arcade style" goes, I think this works if we think about arcade games like Marble Madness. Another arcade concept that you may consider is from Bubbles by Williams where you had to be bigger than the drain before the water came on to make it to the next level. I wouldn't relish trying to pull that off technically, though. I really like what you have so far...
  4. It doesn’t look like there is much hope of this being addressed anytime soon. https://sentinelksmo.org/wayfair-decision-hammering-catalog-sellers-into-extinction/
  5. This is great work along with the DLI tutorial. I wish I had access to these in the 80s but I do hope it will encourage others to start coding on the A8. I must also say...
  6. Does it happen immediately or after a while? One time, I had an issue where it would cause corrupted frames occasionally. It turned out that I was using a JSR without a matching RTS and it was filling up the stack... Playsoft found that error for me. I don't know how he found it that fast. Not that you are asking about this but just about every DLI example that I have seen from the early days uses routines like this: 2570 PHA ; 3 cycles (4 for PLA) 2580 TXA ; 2 cycles 2590 PHA ; 3 cycles 2600 TYA ; 2 cycles 2610 PHA ; 3 cycles = 13 cycles per frame and 5 bytes Personally, I prefer: STA ATemp ; 4 cycles STA Xtemp ; 4 cycles STA Ytemp ; 4 cycles = 12 cycles and 9 bytes for non-ZP and 9 cycles and 6 bytes if ATemp, Xtemp and Ytemp are ZP. (obviously, you have to LDX xtemp, LDA Atemp and LDY Ytemp before exiting... Also, I don't know if you are using Y inside of your DLI. A comment says "; NOTE: code uses X register" You could save 11 cycles per DLI if you don't use Y because you wouldn't need to restore it using TYA, PHA and PLA, TAY I would also try to make sure the two DLIs are close enough together where one would fall through to "; restore registers" and the other would branch to it and save some memory (but costing 2 cycles). I also save off Y last and restore it first so that the DLIs that don't use Y skip the Y part of the restore. Of course, I haven't completed anything in 3 years so my advice may be worth less than the price I am charging you for it. I am always amazed that you manage to get an ABBUC entry submitted every year!
  7. I apologize if I am answering the wrong question with information you already know. As far as I know, MADS itself doesn’t reserve any addresses. The OS has some addresses reserved for code and other specific purposes. I think you want to look at a memory map like Ian Chadwick’s Mapping the Atari. https://www.atariarchives.org/mapping/ It will tell you what addresses are reserved by the OS as well as which are Write only or read only. For example $D000: writing to this address sets the p0 horizontal position and reading from it is a collision register. I am aware that book has some errors so others may suggest a better source for information. It also gives a good idea of what zero page addresses are available for you to use. If you are looking for a place where you can write to memory, page 6 is out there $600-$6ff. You also need a memory address for your program code itself. Does that help answer the question or did I misunderstand?
  8. Not Halloween themed but the final screen of Bruce Lee is the scariest looking thing I have seen on the Atari. Also, play Rescue on Fractalus for the first time.
  9. Peter, Sometimes, I think I am too stupid to use Eclipse. For some reason, my install had no option to install/update software. I installed the latest Eclipse and, for the first time ever, my workspace migrated perfectly. I just tried your updates. The "Skip All Breakpoints" works perfectly. It will benefit me greatly. I know I mentioned one use case but the other common use case for me is that I will try to track down a problem and I put several breakpoints into the code. Then I run with breakpoints on and I might find what I think is the problem and make a code change. Before, I had to disable all my breakpoints if I wanted to try for a clean run. If my change didn't work, I would have to go put the breakpoints back. I hope others find this as useful as I do. Thanks again! Rob
  10. That tool uses the .apl extension. You want to “save” or “save as” so you can retrieve the sprite later. To create the data to use in your program, choose “list” and it will save a text file that you can open and extract the data you need. Use notepad or your text editor of choice. Keep two separate files: the .apl and the .lis. The tool does not provide a way to load from the .lis file.
  11. Thanks for sharing! I had that exact TV that I used with my 800. I think it was an RCA 13" which was color and a huge step up from the previous black and white television I had. It was a huge cost at the time because a 13" black and white TV could be purchased for less than $90 while color was over $200. I am talking base model prices without a remote and not cable ready, I don't even remember what the cost of a Trinitron was back then.
  12. Even the original NES version had some flickering. One example is if you don't use the warp in World 1-1. Toward the end of the level, if Mario is on the ground, you have Mario and 4 Goombas on the same horizontal line. Mario and the 1st and 3rd Goombas are solid. The 2nd Goomba flickers slightly while the fourth Goomba is very transparent due to flickering. Watch here: https://youtu.be/1qcTwuKozs8?t=77 Obviously, 5 objects that are each composed of two players on the same horizontal line is a nightmare for PM graphics if you are striving for a flicker free game. If someone is considering using character graphics, one thing in the original that bodes well for the A8 is that Goombas share the same colors as the background Black, white? and (orange above ground and blue when underground) so you would have enough colors for the Goombas. Also, when you are underground, I don't think you have anything that you need to mask since the background underground is black. Above ground, there are a lot of shrubs, etc that would create a lot of overhead and tons more work.
  13. Zone Ranger is one example that uses XOR but to perfectly mask, especially on a character that stays in focus like this, you would want to pre-render or use an AND and then an OR. The explanation that resonated most for me was in the "Image Masks" section of this article: https://en.wikipedia.org/wiki/Mask_(computing) I know Popmilo has done a lot of work in this area. See this thread as well which discusses performance and other concerns: http://atariage.com/forums/topic/242523-software-sprites-too-much-complicated-on-atari-8-bit/?view=findpost&p=4082808&hl=%2Bsoft+%2Bsprites
  • Create New...