Jump to content
IGNORED

7800basic beta, the release thread


RevEng

Recommended Posts

The differences between the latest PDF and the one before it were checked using WinMerge, then I updated the High Score Support section, added the Music Tracker section and the Feature Modules section. The table of contents and index were also updated. If you think I missed something or screwed something up, please let me know.

 

Thanks.

  • Like 4
Link to comment
Share on other sites

  • 4 weeks later...

Could paddle code be implemented into 7800Basic?

Eventually, but not soon.

 

The most straightforward implementation would resemble a 2600 kernel, and waste a ton of cycles during the visible screen. I'd like to avoid that, as then I'd just get requests for paddle support that works with more than a handful of sprites.

 

I have some ideas on how to improve that, but it would need an overhaul of how interrupts are handled.

Link to comment
Share on other sites

  • 2 months later...

I've dabbled with programming in various flavors of basic over the years but wouldn't call myself a programmer. So please bear with me.

 

I'm not understanding why there is all of the different color phasing color palettes for the 7800 as opposed to just one color palette like there is for the 2600 for example. And also I don't understand how to implement using all of these palettes.

Link to comment
Share on other sites

The 2600 has different hardware color registers for the various objects it can display. These color registers are more or less a sort of dedicated palette.

 

The 7800 doesn't have a fixed number of objects it can display, so it wouldn't make sense to dedicate color registers to any one object. Instead there are groups of color registers (palettes) that you get to pick from when you tell Maria to draw any given object. The bonus here is, your yellow-and-green wood-elf sprite can become an ice-elf sprite just by picking another palette, and they can walk around on the same screen.

 

The alternative to using palettes would be for the 7800 to have a single 16-color palette and exclusively use 16-color graphics. This would be expensive in terms of ROM space and Maria cycles, so the games would have to be a lot simpler.

  • Like 1
Link to comment
Share on other sites

What I mean is on the color picker charts. There is a 25.7, 26.7 and others. With very little difference between them. What is the purpose of that? Do you just pick one to use?

There's not a purpose - those charts represent a bug rather than a feature - the color phase change due to drift in the colorburst generation circuit. See the dev wiki for more info.

 

You don't pick any one of those, per se. You just have to be aware that as a console warms up, the colors closer to 255/$FF will tend to drift in quality. So if you need, for example, a yellow that won't change color, it's better to use $18 instead of $F8.

  • Like 2
Link to comment
Share on other sites

There's not a purpose - those charts represent a bug rather than a feature - the color phase change due to drift in the colorburst generation circuit. See the dev wiki for more info.

 

You don't pick any one of those, per se. You just have to be aware that as a console warms up, the colors closer to 255/$FF will tend to drift in quality. So if you need, for example, a yellow that won't change color, it's better to use $18 instead of $F8.

 

 

Ah, okay, that makes more sense now. With all of those phase shifted color charts being thrown around my head was starting to spin. Thanks Rev.

Link to comment
Share on other sites

  • 2 weeks later...

This may be a dumb question, and knowing me I'm missing something completely obvious, but is the 7800 x/y screen axis opposite of the normal y being vertical and x being horizontal? I have a problem where when moving my character the y variables are moving the character horizontally. I have the y variables setup on the joy0down command, but when I press down in the emulator it moves it horizontal. I've tried two different emulators and they are button mapped correctly.

Link to comment
Share on other sites

Check out the included adventure demo for an example.

 

Maybe you don't have the plotsprite arguments right?

 

Yup, been using the adventurer example. It definitely helps. As far as I can tell the plotsprite is correct. If I switch the p0y to p0x then it moves down like it's supposed to. Of course that's the y axis not the x. This is what I have.

 set tv ntsc

 dim p0y=a
 dim p0x=b
 
 p0y=40
 p0x=40

 incgraphic gfx/ostrich_down.png
 incgraphic gfx/ostrich_up.png
 incgraphic gfx/ostrich_left.png
 incgraphic gfx/ostrich_right.png

 P0C1=$03
 P0C2=$f3
 P0C3=$f8

 BACKGRND=$00

 plotsprite ostrich_right 0 40 40

gameloop

 if joy0down then p0y=p0y+1:goto doneostrichmove

 goto gameloop

doneostrichmove
 clearscreen
 plotsprite ostrich_right 0 p0y p0x

 restorescreen

 goto gameloop
Edited by briwayjones
Link to comment
Share on other sites

  • 4 weeks later...

I was working with some large graphics in a test program and found I couldn't fit all of the graphics inside a single bank. That alone isn't too big a deal so I went back to the graphic I was cutting up to fit.

 

While I was freeing up space, the overflow wasn't falling into the proper bank as quickly as I expected it to. I did some extra testing and found for some reason the last 8 bytes (32 pixels) of the bank refused to accept graphics despite the next graphic to be added was smaller than 8 bytes. (I had to keep chopping up a larger graphic til it fit.)

 

I tried making a quick test prog, attached below, to see if it would always leave 8 open. But it didn't. The test program simply tries to add (with mode 320B) 256 4-pixel graphics. That should completely fill the bottom bank. However, while it won't leave 8 free like it was doing with my graphics tests, it left 1 open. (I added a 257th sprite as well which should always carry over, which it does - but it should be the only graphic that does that.)

 

Not sure if this is an Issue, or if I'm just misunderstanding something.

 

The program itself does nothing - it's just a list of graphics includes for the most part.

bug.zip

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Thanks. I'm not sure if the bug is completely eliminated but it's certainly in a better state than it was!

 

I also noticed the latest version redefined how DL start locations for the zones are caculated - where I hook into them directly it made for some interesting side effects. :D I like the change though - it looks like it'll make it easier to edit savescreened data in the long run, as well as changing resolutions during the development cycle. :) (I primarily just edit the wall locations in graze suit alpha currently as an example.)

Link to comment
Share on other sites

  • 4 weeks later...

Ok, I found the real source of the incgraphic bug, and fixed it correctly. It seems I had a mistake in the 320B and 320C byte width calculation used to see if the dl has enough remaining room for the new graphic.

 

I've also introduced optional double-buffering. Behold! 40 moving sprites...

 

post-23476-0-83074900-1492274898_thumb.png

doublebuffer.bas.a78 doublebuffer.bas.bin

 

...such a large number of sprites requires external/on-cart memory, to hold a larger display list. The "set dlmemory" command was added to support this.

 

double-buffering unhooks your game code from the TV display frame-rate, so it's also handy for games that need extra time to build up a complex display.

 

Some architectural changes occurred in this release. I had to change the mode-splitting technique to account for this - see the splitmodedemo in the samples directory, or the manual information on "topscreenroutine".

 

The new 0.6 release can be downloaded from 7800.8bitdev.org, as usual.

  • Like 5
Link to comment
Share on other sites

The differences between the latest PDF and the one before it were checked using WinMerge. Based on that, I added the set dlmemory section, the doublebuffer section and the topscreenroutine subroutine section. The Table of Contents and Index were also updated. If you think I missed something or screwed something up, please let me know.

 

Thanks.

  • Like 2
Link to comment
Share on other sites

I can probably guess the answer but just to save me some time from tinkering with the samples, is it possible to do a splitscreen with the topscreenroutine with double buffering active? Or would it cause glitchy things if the double buffering went more than a frame before switching?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...