Jump to content
IGNORED

7800basic beta, the release thread


RevEng

Recommended Posts

Heads up there's a new v0.29 7800basic release at github. Changes include...

  • feature: added "set 7800GDmenuoff" statement, to flag that 7800GD shouldn't use the menu.
  • feature: added "set 7800header" statement, to allow adding ad-hoc 7800header commands.
  • feature: plotchars now can plot more than 32 characters, when working with 160A, 320A, or 320D.
  • fix: 7800header was sanitising mega7800 controllers on reload.
  • fix: dasm updated. Inability to grow pass-buffer now handled gracefully.
  • fix: plotmap causing compilation errors due to missing multiplication library.

I would normally wait more than a week between releases, but the plotmap bug is compile-breaking, so a quick release was warranted.

  • Like 10
  • Thanks 4
Link to comment
Share on other sites

Awesome update thanks Mike!! >32 chars is the best!

 

For those using the set 7800header command use as follows:

 set 7800header 'name Millie & Molly 7800'
 set 7800header 'set hsc'

 

Atari Dev Studio update incoming...

  • Like 3
  • Thanks 3
Link to comment
Share on other sites

  • 2 weeks later...
6 hours ago, Jag_Mag said:

Can code asm inside,that's cool

I'd go so far as to say 7800basic is a great tool for learning 6502 assembly. It's trivial to look at the compiled output that's sent to the assembler and learn how the higher level commands break down into simpler instructions. You can then take that code and make small optimisations based on assumptions the compiler can't make until you're confident to just do certain things in assembly.

 

I write most of my code in assembly just because I'm comfortable with it, but I leave all the tedious work like converting graphics data, playing sounds, managing the screen and more to 7800basic. If there's some complicated logic I can always write it in 7800basic and move on whereas otherwise it might have scuppered the whole project.

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

  • 5 weeks later...

There's a new v0.30 7800basic release at github. Changes include:

  • feature: integrated project backup.
  • feature: plotsprite4 command added, for generating 4 byte DL objects.
  • feature: PLOTSPRITE and PLOTSPRITE4 commands added, for more efficient looped sprite generation.
  • fix: throw error when plotchars doublewide exceeds 32 characters. (which exceeds the screen width)

If you're not regularly backing up your game projects, I urge you to do so now. We've had two developers lose mature projects due to hardware failures in recent history. A thumb drive attached to an unused usb port is a cheap and easy insurance policy.

 

The new backup feature will create a backup of your basic file, included images, mapfiles, and rmt files, every time you compile your game project. The backup goes to a location you specify in your source code. You have a choice of replacing the previous backup with the new one (single mode) or keeping a running history (running mode)

 

The sprite related updates are useful for better efficiency, provided your game design can work with their quirks. (see the "Advanced Spritework" part of the manual). Using 4-byte sprites allowed me to upgrade the 69 Sprite Demo to 86 sprites, thanks to the reduced DMA 4 byte sprites have compared to 5 byte sprites.

  • Like 10
  • Thanks 1
Link to comment
Share on other sites

9 hours ago, RevEng said:

The sprite related updates are useful for better efficiency, provided your game design can work with their quirks. (see the "Advanced Spritework" part of the manual). Using 4-byte sprites allowed me to upgrade the 69 Sprite Demo to 86 sprites, thanks to the reduced DMA 4 byte sprites have compared to 5 byte sprites.

Most excellent! I have switched "Space Peril" (Adventure in space) to use plotsprite4, and everything seems to work as well as before as far as I see so far (everything uses 160A in that game, so there should be no difference). I never saw a case where Maria limits were reached, but now it's a little less likely, even. 🙂 The project may also benefit from using PLOTSPRITE4 in a loop for object/enemy generation.

 

Btw there's a small typo in the documentation: "The PLOTSPRITE and PLOTSPRITE commands don’t work with tallsprites" should presumably read "The PLOTSPRITE and PLOTSPRITE4 commands don’t work with tallsprites".

  • Like 4
Link to comment
Share on other sites

Excellent - thanks for the testing and typo report!

 

I tried out the four byte sprites in Salvo, with similar results. The reduced DMA isn't the biggest boost if you're not already pushing the limits, but if it's free, so you may as well. I think where it can be really useful is for designs that use sprites as tiles. That's pretty much what I did for the Petscii Robots tile display, though I built the four byte sprite objects via manually crafted data tables.

  • Like 3
Link to comment
Share on other sites

50 minutes ago, Muddyfunster said:

That's what I was hoping :D will be testing this on Bernie this weekend. Thanks for the update Mike.

:thumbsup:

 

A couple sharp edges I forgot to mention...

  • 4 byte sprites can "only" plot objects up to 31 bytes wide. I'll update the manual and get the compiler to throw an error if someone attempts this.
  • The PLOTSPRITE/PLOTSPRITE4 commands are limited to sprites that are 16 bytes wide - I can extend those if necessary, but it already seems excessive, given the purpose is to loop and plot a ton of sprites efficiently.
  • Like 5
  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...

A couple of items may be outdated - but the majority should still be applicable:

 

7800basic for Newbies: A Tutorial, Part 1

7800basic for Newbies: A Tutorial, Part 2

7800basic for Newbies: A Tutorial, Part 3

 

The complete tutorial was posted as a downloadable pdf file.

 

For convenience, there is also the online 7800basic Guide.

 

If not already aware of it, you may want to check out Atari Dev Studio

It should make the jump easier.

 

A major and fantastic resource is the 7800 Development Wiki via 7800.8BitDev.org.

Information and documentation posted is up to date at that site.

  • Like 5
Link to comment
Share on other sites

  • 3 weeks later...

There's a new v0.31 7800basic release at github. Changes include:

  • feature: compression and decompression commands have been added.
  • feature: two-pass compile phase. Banners and tallsprites no longer need to follow their corresponding inc* statement in your source code, to work as-expected.
  • feature: "set pausesilence on" directive added, to pause and silence tracker music when pause is active.
  • fix: the native tia music tracker generates spurious reads to $0000.
  • fix: max shakescreen with screenheight=224 and zoneheight=8 would sometimes cause interrupts to be missed.
  • fix: plotsprite4 wouldn't error-out when you plot a sprite 32 bytes wide. An error message has been added.

For anybody using the lz4 compression assembly routine that's been kicking around, I'm pretty sure you'll find the new in-built lzsa has better compression (typical 10% smaller) and faster decompression. (typical 20% faster) and a slightly smaller footprint. All credit goes to the Emmanuel Marty of the LZSA project. (though I did use 7800heat to improve the 6502 decompressor speed by about 10%)

 

  • Like 9
  • Thanks 2
Link to comment
Share on other sites

20 hours ago, RevEng said:

There's a new v0.31 7800basic release at github. Changes include:

  • feature: compression and decompression commands have been added.
  • feature: two-pass compile phase. Banners and tallsprites no longer need to follow their corresponding inc* statement in your source code, to work as-expected.
  • feature: "set pausesilence on" directive added, to pause and silence tracker music when pause is active.
  • fix: the native tia music tracker generates spurious reads to $0000.
  • fix: max shakescreen with screenheight=224 and zoneheight=8 would sometimes cause interrupts to be missed.
  • fix: plotsprite4 wouldn't error-out when you plot a sprite 32 bytes wide. An error message has been added.

For anybody using the lz4 compression assembly routine that's been kicking around, I'm pretty sure you'll find the new in-built lzsa has better compression (typical 10% smaller) and faster decompression. (typical 20% faster) and a slightly smaller footprint. All credit goes to the Emmanuel Marty of the LZSA project. (though I did use 7800heat to improve the 6502 decompressor speed by about 10%)

 

This is very cool. Is there a software used to write music for the TIA tracker? Does the TIA music tracker allow for TIA sound effects to override on of the music channels?

 

I have a lot to learn, especially the compression stuff. If I can only carve out the time!!! 😪

  • Like 1
Link to comment
Share on other sites

7 hours ago, darryl1970 said:

This is very cool. Is there a software used to write music for the TIA tracker? Does the TIA music tracker allow for TIA sound effects to override on of the music channels?

 

I have a lot to learn, especially the compression stuff. If I can only carve out the time!!! 😪

The built-in tracker uses MML for composition. MML is kind of a programmer's music composition language. There are examples in the samples directory, and the manual covers the MML syntax.

 

The tracker shares same TIA priority code as sound effects, so the music can play together with sounds - up to you which instruments or sound effects have priority over others. In the Salvo theme, I intentionally used a busy drum track (loosely based on the Funky Drummer riff) The notes have priority, and the beats just fit in wherever they can.

  • Like 2
Link to comment
Share on other sites

9 minutes ago, RevEng said:

The built-in tracker uses MML for composition. MML is kind of a programmer's music composition language. There are examples in the samples directory, and the manual covers the MML syntax.

 

The tracker shares same TIA priority code as sound effects, so the music can play together with sounds - up to you which instruments have what priority. In the Salvo theme, I intentionally used a busy drum track (loosely based on the Funky Drummer riff) The notes have priority, and the beats just fit in wherever they can.

 

Now all we need is RevEng Paint!  You lose a life each time you try and place a note the TIA can't handle.  Very challenging!

  • Like 2
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...