RSS Bot Posted October 7, 2006 Share Posted October 7, 2006 Adding the playfield was a nightmare. I had thought up ways of trying to impliment it but not only could I not get them to work at first - I also saw the glaring problem of excessive ram usage that really wasn't necessary. As a result, versions 0.002 and 0.003 are dead. I could have just named this as version 0.002 but given this version does reuse some of the code I wrote in both versions 0.002 and 0.003... The playfield has a similar, but greater, resolution as Atari's Adventure. Adventure divides the screen up into 7 zones. the middle 5 being twice as big as the top and bottom zones. Using some simple math on 192 scanlines for a visible picture, you see that it uses a 16/32/32/32/32/32/16 zone approach. This is ok, but since I'm planning on bankswitching this rom later on, I can afford to use up the extra rom to have equal sized zones. In this version, I drew the yellow castle as the playfield. It has nothing to do with the game idea I'm heading towards, but does show some of the possibilities. Additionally, I'm surprised I've still managed to keep in the background changing code so far. There was almost not enough time to do everything I wanted however so when I go ahead to adding a few more things it'll probably have to go, or get limited somehow. Two problems I had with this code - not updating things fast enough in instances where I had to update the player AND the playfield at the same time. I was just barely late in updating the Playfield registers. As a result it gave me an odd looking error in the form of "playfield bleeding" onto the next line. Because I forgot that P1 is arranged differently than P0 and P2, it took me a while to figure out exactly what was going on. It was only affecting the left side however so I knew it had to be a timing issue. ^^;; To fix it, I moved some things with the background color around, pushing the update of the variable to after the playfield was updated (5 cycles freed) then moved the loading of the bgcolor variable just before the line's WSYNC instead of right after it. (3 cycles) There was also a case where the screen would roll whenever the player crossed over a zone boundary. (the top line of the player only) The problem was with how I had added the code to set PlayerSize into Y to determine how long to keep displaying the player before we turned it (the missiles) off again. CODE dec LineCounter ldy PlayerSize bne .SomeLabelI'mForgettingTheNameOf ^^;; Basically that's what I did. I shoved the ldy right between a DEC that was trying to count down the lines remaining in the current zone, and the bne that was waiting to test for the Zero Flag that the dec would at one point set and signal a new zone. Because PlayerSize is always non-zero.... Anyway, moving it fixed the problem. My next goal is to play with the collision latches and to start in on the collision detection between the player (missiles) and the playfield. This should be a simple update compared to adding the playfield. X_X Oh, and while I'm now calling it "Action RPG", don't anyone get their hopes up for a finished rom any time soon. For attachments, I've included a screenshot of what version 0.004 looks like, as well as a zip containing screenshot, notes, rom, and source for version 0.001. action_rpg_v001.zip http://www.atariage.com/forums/index.php?a...;showentry=2143 Link to comment Share on other sites More sharing options...
Recommended Posts