Jump to content

John Russell Ernest

  • Content Count

  • Joined

  • Last visited

Community Reputation

5 Neutral

About John Russell Ernest

  • Rank
    Space Invader
  • Birthday 04/25/1979

Profile Information

  • Gender
  1. I'm just getting started learning 6502, and have 2 questions I need some help on. I'm using the Yars' Revenge source code and the 2600 Programming Guide to learn right now. 1st question: Here's a few lines in the code that confuse me: .setYarColorValues lda #DK_BLUE+12 sta yarColor ; save color for Yar sta COLUP1 ; set color for Yar sprite lda #BROWN+14 sta reservedYarColor lda #<player1Score sta playerScorePtr lda #<Qotile sta qotileGraphicPtrs lda #>Qotile sta qotileGraphicPtrs+1 lda #NEUTRAL_ZONE_MASK sta neutralZoneMask sta reserveNeutralZoneMask ldx #4 What do the > / < mean for lda and when is it appropriate to use them? I know the # is immediate addressing. The qotile in this case is the qotile graphic: Qotile .byte $00 ; |........| .byte $0F ; |....XXXX| .byte $1B ; |...XX.XX| .byte $33 ; |..XX..XX| .byte $E3 ; |XXX...XX| .byte $FF ; |XXXXXXXX| .byte $E3 ; |XXX...XX| .byte $33 ; |..XX..XX| .byte $1B ; |...XX.XX| .byte $0F ; |....XXXX| .byte $00 ; |........| 2nd question: On conditional branch statements (bmi, bcc, etc) does the code continue where it was before after execution of the branch (just making sure I understand branching vs. jumping)? Example: StartSwirlAnimation IF COMPILE_VERSION = NTSC lda #>SwirlSprites sta qotileGraphicPtrs+1 ENDIF lda #<SwirlSprites sta qotileGraphicPtrs lda #SWIRL_TRIPLE_FREQ bit gameState beq .jmpToCheckUpdateQotileMissile; branch if Swirl not firing at triple freq lda gameTimer ; get current game timer ror ; shift D0 to carry bcc .jmpToCheckUpdateQotileMissile; branch if this is an even frame ror bcs CheckToLaunchSwirl ; branch if D1 of game timer set .jmpToCheckUpdateQotileMissile jmp .checkToUpdateQotileMissile On the above bcc I bolded, does execution continue to the next ror on the line below after .jmpToCheckUpdateQotileMissile is called?
  2. I think the easiest way is to use the stella debugger. It disassembles automatically and you can set breakpoints and breakconditions. I'm going to give that a go too thanks for the tip.
  3. I just got an email back from Doug. Unfortunately Q15 is an automatic red zone by design so there is no possibility of saving all planets. You can actually skip having to kill the Fed Planet in Q12 by waiting until it's attacked and then passing through so for me it was all down to Q15. So close but so far away. Also he said Atari holds the copyright to the game so I'd have to ask them for permission, I don't see that happening in this lifetime. I'd still love to finish learning 6502 and interpret the disassembly. I think the game is a marvel of creation for a 16kb rom (you don't see true coding skill like that these days) and I've always wanted to know 6502 for Atari/NES because I feel it will make me a better programmer plus I love to see how things work and have evolved over the years. People I see in the business world are very high level and have forgotten the mechanics of how computers actually work. Everything is all abstracted in APIs and design patterns and dependency injection frameworks, but that's a different discussion. In fact on a major banking project I just conquered the only way anyone on my team was going to get the job done was by me getting into Reflector Pro and reverse engineering the code to figure out what this crazy 3rd party CMS system was doing behind the scenes of its WCF (C# web service) layers. Maybe down the road I could make a game that's abstractly similar in nature in Unity 3D or another engine but with the possibility of sparing all planets (I want to make this tough enough to be a near impossibility but still humanly possible), more quadrants, different enemies, side scrolling and first person parts, etc. I've thrown around a few ideas like having a timer that tells you how long until the next planet in sequence dies I could keep the map paths for enemies statically defined. I could go on a laundry list of things. Anyway, great to have some closure on this age old question anyway.
  4. Well I sent an email to Doug a couple of days back but no response back, hopefully it didn't get lost in "email hell" lol.
  5. I beat the game the other night following the map, I had to use some Save States so I want to go back and practice my skill to get through the game without the usage of Save States. http://skintigh.tripod.com/atari/solaris.html I also found out a little trick if it's not already known. You don't have to kill the Fed Planets in Q6 and Q12. Wait until an enemy ship attacks the planet, then save the planet. Once done you can pass through without having to destroy it. Be warned in Q13 if you use the same trick to destroy the 2 Zylon planets, you'll have to kill the Fed Planet on the way back. I don't have an answer for Q15 though, it appears as though it's already Red Zoned by the time you come into it. I don't know if this is intended by design and that's what I hope to find out.
  6. I think it is. Although, my personal best was maybe nine allied planets saved. I should also note that Solaris had some annoying bugs that could cost you a planet or two. For example, in the red sector with the allied planet on the upper right hand corner would sometimes get destroyed even you destroy all the fleets that threaten it. I mean I would destroy all the fleets, leave, come back a little later and find the planet gone and the sector's a red zone. I've wondered for a long time if these are actually bugs in the game or if it's by design. Seems like all signs point to bugs though. If it IS possible to beat the game though with saving all the planets I'd have to say this is one of the most intriguing games I've ever played (and in 16k of ASM code at that) I'm glad to have come across it when I was a kid. I didn't get a chance to play it again until emulation came around so I've been playing it on and off through the years trying to beat it. They just don't make games this fun anymore with a pure mix of fast-paced strategy and raw action in a space shooter, it's all formulaic and industrialized these days to guide gamers on an easy path to win but that's a whole separate discussion. I've thought for a long time about doing a remake in a 3D engine as well but even that's kind of iffy because the real challenge actually comes from not being able to kill or see your enemy until it's right in your face which was obviously due to a hardware limitation at the time but it worked out favorably.
  7. Oh wow thank you very much! Even cooler that there's an actual qotile.net website in existence lol.
  8. Hi, my name's John and I'm new here. I have been a fan of the Atari 2600 since my childhood let's just say for the sake of argument I was playing Yars' Revenge and Space Invaders before I could talk. One of my favorite games of all time though has been Solaris, for several reasons of which I won't ramble on about unless you'd like to ask. Anyway, I would like to pose a question that has troubled me for some time. Is it theoretically possible to beat Solaris without the loss of human life? (i.e. no planets have been destroyed by the Zylons) Quoting from one of two walkthroughs I've found on the game at http://www.gamefaqs....laris/faqs/8386: "**Q11: Automatic Red Zone!! Nasty, nasty, NASTY!!! I've never managed to make it through here. The south exit is where you want to go." The other walkthrough I've found was here (http://skintigh.trip...ri/solaris.html): "Here is the rest of the sequence and map to win. The sequence is the only way I know how to win, but it is kind of disturbing for an atari game... Maybe I played wrong... You'll see what I mean." Yep, I know what you mean... and I have to ask the question, is it actually possible to beat Solaris while sparing innocent life, or does the game impose an inevitability of loss of human life by design? To answer this question of course I would need to know more about the game's inner workings. It's a 16k rom I know that. I am new to 6502 assembly language programming and am starting to do some research any help would be appreciated as far as resources are concerned. I have done some X86 assembly in the past. My theory on approaching this answer is to decompile the code and look at the functions happening from the beginning of the game. I do know from playing the game many times I at least know the maps and starting positions of enemies are static, the movements of the enemies on the map are possibly static as well but I'm not entirely sure without looking at the code, seeing how timing occurs, etc, and essentially coming up with a number on how much time I need before each planet dies per quadrant, and which enemies to kill and which to avoid to calculate the optimal path. If it is possible to beat the game without losing any planets, then the challenge is accepted. If not, well then I can at least appreciate it for what it is and have some closure on the matter. This would be a fun exercise in learning 6502 programming either way. So, what's the best decompiler to use? What have you found to be the best resources in learning 6502? etc.
  • Create New...