Jump to content

Mord's Blog

  • entries
    170
  • comments
    93
  • views
    100,635

About this blog

I'm really not sure what I'll use this blog for so I should probably leave this blank, but that would require backspacing. Much easier to just hit a period and stop typing.

Entries in this blog

Test Realm

Ok got the new roomloader working. Here's a little map of the realm. I've moved the sprites to push them off the screen for now. They're not serving a purpose yet anyway.     You start in room 1 when you start up the rom. Room 2 is the only room right now that is using relative-exits. I had problems with it in the code at first so changed all the rooms to explicit then turned 2 back into relative to test. The problem was me, not the code. Basically I was adding the wrong thing to th

Mord

Mord

Room Format Modifications

I've been tweaking with the room loading routine and added a few things to it to allow me to reuse roomdata. There's no need to explicitedly set byte-for-byte all the playfield data for all the zones of a room in all rooms of all regions. Especially when you consider how many 3-byte strings will be identical.   Now in the room data I just specify the starting offset (low-address) for where a 3-byte string will be taken from. The highbyte/page has been pushed into the high nybble of the Z

Mord

Mord

(Action RPG) Version 0.011 - Room Loading

With version 0.011 I've added/fixed a couple things. First of all the sprites are positioned properly. They're hardwired for now, and there's no mechanism to determine what sprites need to be displayed each frame, if any, depending on the room. There are no actual items yet!   There are, however, actual rooms!   The exits are working although it's not prefect yet. I still have to add the room exit info to the collision detection routines. So if you try pressing against a wall while wal

Mord

Mord

I suck.

I've begun moving room data into a real room loading procedure. I had a few issues to work out but after a few hours of wondering WTF was going on with the data that was apparently NOT what I trying to load, and finding a few errors in the code along the way (not that they would do anything to fix the situation apparently) I finally got it working normally again.   All I have to say is this.   BNE != BEQ  

Mord

Mord

Getting back to coding.

I refreshed the code back to version 0.010 and redid the modifications to the code to make things work. The weird problems didn't restart and I even fixed up the code a little better this time to make sure no jumping of scanlines was occuring when P0 or P1 was touching or crossing over the top of the gamefield. (too much time taken - in each of hte lines where I updated P0 or P1 via a modified Skipdraw.)   Then I tried altering the playfield again and noticed the exact same funkiness return.

Mord

Mord

YARG.

I won't be making version 0.011 before christmas. Had to reload from version 0.010 because at some point really messed up things happened and I didn't have the slightest idea where to start debugging the cause. Basically it went something like this. The collisions only test the outer missile. Something funky was going on that caused hte outer missile to somehow turn off randomly. And at the same time the inner missile was striped (horizontally).   Additionally, the playfield's color se

Mord

Mord

Christmas bonus

The company I work for gave out cheques for 1 week's pay to employees since it was another record breaking year for the company (compared to it's performance in previous years and whatnot) So it looks like I may be able to place an order in the AA store after all. Still can't get much, and certainly can't spend over 100 for the free christmas cart, but I'm definitely going to look into an Atarivox if nothing else.   With regards to the rom, more work is necessary than I originally expected f

Mord

Mord

Found the problem. x_x

I use the stack pointer as an extra register during the gamefield zone scanlines, namely to keep track of the scanlines to generate - it's faster than updating ram itself. Problem ended up I was setting the stack pointer before the last sprite positioning subroutine call that I added in to the zone between status bar and gamefield. This corrupted the playfield that was intended then returned the stack value to "normal" so the screen would still generate the proper number of scanlines.   Noti

Mord

Mord

(Action RPG) Version 0.011 Beta

I copied over the code I've been working on to fit as much of the setup code into as few lines as possible for the vblanking. Here's what it looks like in stella. Looks the same in z26.           Sprites are fine. unlinked and all that as they should be. Haven't tested for their correct scanline yet but it should be. I still have to add code to set up the sprite's reflection (if needed) and size. (which would also adjust the sprite's coordinate for drawing with the position-a-sprite r

Mord

Mord

Back to the grind.

Seems every time I finish a tiny milestone, as each version tends to be, I get a kind of rush. Of course this means much procrastination for a job well done.   At least I spend that time -thinking- about the upcoming goals for the next version.   So while it's already been a week I'm getting back to the editor. Work is a little heavier right now up until christmas but I'm sure I'll get a few things done before Christmas Eve.   Goals for Version 0.011:   1. Patch in Eric's f

Mord

Mord

(Action RPG) Version 0.010

Ok optimization done for now. I think I could probably save a few more bytes in there yet but it's ok for now. Plenty of CPU cycles saved overall.   One additional concern to look out for reared its ugly head with this version. The Status Bar routine is extremely tight for timing. To the point where if it's positioned so that one of it's branch operations crosses a page boundary....   To fix that, I've got it ORGed. I'll have to remember to ORG the display code as well so those things

Mord

Mord

Saving cycles.

Of course, this means saving compared to how I use to do it. To maintain player movement while they're trying to push along a wall as they move in the collision tests I have to take into account wasted frames and on successive direction tests jump further to make up for lost time.   Since horizontal tests are done first, to test movement in the horizontal direction I double the speed prior to moving. Originally I just went through the full 16-bit addition sequence twice. On average that woul

Mord

Mord

(Action RPG) Version 0.10 Beta

The screen no longer rolls on hardware when using my Gemini. If anyone runs it on other 2600/7800 models and finds it still rolls the screen, leave a note? (If for no other reason than I know I'll have to come back to it.)   Attached is a rom. While the code has been optimized somewhat it is functionally identical to the version 0.009 release except it works on hardware.   The problem looks to have come from how I terminated the visible portion of the screen right before entering Oversca

Mord

Mord

Found it.

So there's nothing wrong with the actual code as far as I can tell.   The problem of it dropping a scanline seems to be based on how it exits the timer-based overscan section. Enabling or disabling the various demo subroutines alter how the extra line is dropped obviously, but so does adding nop's and/or WSYNC's right before it enters the:   ; ------------- Enter Overscan Logic Above ------------------- DisplayOverScanLoop lda INTIM ; 2, 3 ; bne DisplayOverScanLoop ; 2, 2/3;

Mord

Mord

Hardware Rolling

I'm convinced that the cause of the hardware-rolling is not in the logical section. I swapped out one of the big time-wasting functions in there with something that did the same task in a third of a scanline. I see no change. More importantly however is that according to stella's scanline count/frame, we have it outputting exactly 262 scanlines MOST of the time. Under various conditions which I'm still trying to track down, the scanline count drops, rather than increases, to 261.   So.. co

Mord

Mord

(Action RPG) Version 0.009

Final "release" of version 0.009. It does everything I set out to do for this version.   *> Displays 2 sprites on the screen. *> Playfield is striped instead of solid. *> Ball functions as an extension of the playfield in the form of a positional vertical bar. *> Player is a little more "refined" - more out of timing necessity than on purpose, but still.       With respect to the display routine, there's a few things I still need to examine to make sure they're working pro

Mord

Mord

*sob*

Well gee. I wonder why the heck my test item here would never show.   Item_Heart .byte %00000000; ........ .byte %00000000; .xx..xx. .byte %00000000; xxxxxxxx .byte %00000000; .xxxxxx. .byte %00000000; ..xxxx.. .byte %00000000; ...xx... .byte %00000000; ........   Excuse me while I put my head in the oven.     So anyway. Once I actually filled in those magic zeros. ... Something started to display, but not the entire item.   At first it looked like it might be upside down,

Mord

Mord

Rolling along...

I cracked out the Krocodile cart and made a multicart of various games, including what I've done so far for Action RPG. I don't know what's up with it but for some reason the "Adventure" types that I had on the cart (Action RPG included) all rolled.   The TV is fairly new, which could potentially be the cause. I was using a Coleco Gemini (Since it's the only atari 2600 type that I have that actually works well. ) and the three games that showed rolling were Advent, Avalon, and my own.

Mord

Mord

(Action RPG) Version 0.009 Beta 2

Thanks to vdub_bobby I fixed the ball routine so that it no longer pokes over the top - and it doesn't wait until when a sprite is suppose to start drawing before working. To keep timing in the HBLANK however I had to modify the way the player appears. Instead of being a pure strip we now have a dual-colored box! The colors naturally changing based on the colors of the sprites currently on the screen.   Doing this caused an unnoticed semantic bug to stare me in the face.     Notice t

Mord

Mord

(Action RPG) Version 0.009 Beta

Still ironing out bugs but it's starting to take shape somewhat. Sorta.     This is what happens when you forget to actually copy your new display code into the source.   So I copy it over again and fix the remaining label bugs and the like and I get:     I didn't alter my Playfield data for the double-scanline kernel. As a result, stretched vertically.   When in and changed all "F" sized zones to "8" sized zones. to fix the stretch. Edited colors and made sure the BGCOLOR

Mord

Mord

I blog way too often.

My brain is frying but that's ok! The code is starting to take shape. Been spending most of today analysing and editing the PrePlayer branch. The rest of the code is just a copy/paste + minor editing affair I believe so as long as THIS looks like it'll fit in the scanline properly the others should as well. (And I want to make sure PrePlayer is perfect before I copy/paste otherwise it'll mean a lot more editting later!)   As a bonus to me I added a check for screen termination that will en

Mord

Mord

Display Code Yet Again.

I've been trying to build up the scanline pairs for the first stage, the rest of it after that is generally an issue of copy/paste with a few modifications. I was topping out in cycles again so looked for ways to remove things from the kernel without removing anything from the kernel. I think I managed to do that although it cost a couple bytes of ram. By doing this it also freed up a lot of color selection choices for the playfield alterations.   As a result, hopefully I'll have version

Mord

Mord

Display Code Continues

It's proceeding although I find the thing I'm having the most trouble with right now is fitting the code that would organize when to start displaying the ball or player and keeping track of how many lines of playfield remaining into the kernel. I'm going to have to step back and try to organize my thoughts on paper and see where I can reclaim some cycles or find a more efficient way to do some things. I'll probably think of something.

Mord

Mord

(Action RPG) Version 0.009-wtf2

I mentioned what had happened with version 0.009 prior to my scrapping the code and starting to work on the Real Deal. Due to running out of cycles the WSYNC in the player-draw lines were generating 2 lines instead of 1 since it would overrun the normal wait point then sit and wait for a full line. This generated an interesting, if shakey and in the end unusable, magnifying effect. You'll notice the glitch in the status bar as well - that part confused the heck out of me as I don't think I d

Mord

Mord

visible-screen sprite updating.

Looking at what I want the screen to be able to do, there is a problem with trying to update sprites. There's just no time left in the hblank. A sane person would just say "Ok, let's just pull out the playfield color update. All you need is that one extra command in there."   But I don't wanna.   So if you can't do the update in hblank. You'd have to do it during the visible screen. The obvious problems with this would be what if you try updating it when it's being displayed? Are yo

Mord

Mord

×
×
  • Create New...