Jump to content

Karl G

+AtariAge Subscriber
  • Content Count

    1,279
  • Joined

  • Last visited

Community Reputation

1,179 Excellent

1 Follower

About Karl G

  • Rank
    Stargunner
  • Birthday 09/17/1973

Profile Information

  • Gender
    Male
  • Location
    Indianapolis, IN

Recent Profile Visitors

7,424 profile views
  1. In the diagram below, the plus symbols are tiles adjacent to the hero, and are always visible. The ones marked with "1" are straight or diagonal lines that can easily be determined by following the line from the hero, blocking out any tiles that are past any blocking tiles in the path of the line. Once all of those are figured out, the remaining tiles can be figured out through interpolation. Specifically, I check the two adjacent tiles that are closest to the hero, and if either of these is visible and not solid, then the tile in question is also visible. If both of the other tiles are not visible or solid, then it gets blanked out. 0123456789AB 0 XX1XX1XX1XXX 1 XXX1X1X1XXXX 2 XXXX+++XXXXX 3 [email protected]+11111 4 XXXX+++XXXXX 5 XXX1X1X1XXXX 6 XX1XX1XX1XXX So, for example, when checking the tile at (3,4), the two tiles that are adjacent and closest to the hero would be (4,3) and (4,4). If either of those is visible and not solid, then (3,4) remains visible. If both are solid or not visible, then it get blanked out. Tiles need to be checked in the right order from the center out so that it is checking against two "parent" tiles whose visibility is already known. I wrote a C utility to figure out which two "parent" tiles to use for each of these tiles, and to generate the assembly code to check all of them. It was an interesting exercise for sure.
  2. Good news! I was inspired by the discussion to devise a new visibility algorithm. It eliminates the quirks of the old method, works in one pass, and "only" takes 27 scanlines of vertical blank to complete. The only downside is that it takes more ROM space due to unrolling loops for performance reasons, but I have the space to accept that trade-off. Here's a few comparative screenshots of the old method vs the new: Outdoors Near Mountains In the Weapons Shop Pillars Outside City Hall I'll have to do more testing, but I haven't yet found any cases where the new code reveals something that should be hidden. Many thanks to @Thomas Jentzsch for pointing this out, and the discussion which inspired me to improve on my code.
  3. Here's a YouTube Link for anyone who can't easily see it in an emulator:
  4. If bB itself is setup correctly, then the path should include the directory where your bB executables reside. If it is not, then it may be the cause of your issue. Try running the install batch file that's in your C:\Atari2600\bB.1.1d.reveng40 directoryto get this set, then open a new command prompt which should have the new path setting, and try again.
  5. I don't have a Windows setup at the moment, but you will want to cd into the correct directory first, and run "2600bas" with the name of the file, e.g.: cd\atari2600\Zed_Final 2600bas RobotZed_15.bas
  6. Hmm that doesn't give much information. Almost certainly there must be an error that isn't showing in that output window. Maybe compiling from the command line would give more output? Try compiling from a command prompt in your source directory and see if you get any useful messages that way.
  7. Can you post all of the compiler output from the message box?
  8. Yes, statusbarlength aka aux6 is used by the minikernel. However, I don't use any of the pfscore variables, and it doesn't look like your game uses pfscore bars, either. If you aren't using them already, try using pfscore1, pfscore2, and pfscorecolor.
  9. Yeah, using SuperChip RAM means that have to give up 256 bytes of space in each bank. If you have any banks with less than 256 bytes free, you will have to pare it down, or move stuff around. It would be a shame to have to do that just for lack of one variable.
  10. Yes,it is an all or nothing thing, which makes it simpler, at least. Xoxoxo Edit: it's also not entirely symmetrical, since the hero isn't in the exact center (since he can't be with a width of 12 tiles).
  11. It is more complicated than I expected it to be when I first started researching it. A 12-piece 7 grid is 84 tiles, and way too many possible permutations to have in a lookup table. I pre-compute my lines for raycasting in a lookup table to save some processing time, though.
  12. I like the idea of more tiles becoming visible on a second pass, which would probably be too quick to be noticed, but would be kind of like an image coming into focus, anyway.
×
×
  • Create New...