Jump to content
IGNORED

Programming the Bally Arcade/Astrocade


ballyalley

Recommended Posts

Very cool! I love the idea of an Astrocade port of Bad Apple. :)

 

Regarding the color conversion, the script converts the image to a static color palette of eight colors: red, magenta, blue, cyan, green, yellow, black, and white. This works well for full-color images but will miss grays on grayscale images. I could probably add some kind of grayscale detection to the script someday, but in the meantime, a quick hack would be to recolor your gray pixels to, for example, red (#FF0000) and green (#00FF00) in an image editor. Then you can tweak the palette in the .asm back to grays.

 

On the other hand, you could probably do some nice compression on the Bad Apple graphic data if it's only two-color, as you'd only need one bit per pixel to represent it...

  • Like 1
Link to comment
Share on other sites

  • 3 months later...
Jamie Fenton is the creator of the arcade games Gorf and Robby Roto, as well as the Astrocade game system, OS and Bally Basic.


She recently donated a bunch of items to the Computer History Museum in Mountain View, CA. Along with various documents, the collection contains

an original development system that was used to create and debug software for these platforms.


The development system is called an "icebox" - a floppy disk-based Z80 system used as a substitute "CPU and memory", working with the target system hardware. It was used to write programs in Z80 assembly, as well as Terse - a version of the Forth programming language. An early version of the system ran CP/M, but later it was modified to boot a Terse-based OS.


Information from this collection is available here:



The MAME team is now working on emulating the development system. It can already boot the Terse-based OS in emulation.


A number of disk images were also donated, and they are currently being looked at. They contain source code snippets and binaries for various arcade machines and Astrocade programs, tools for assembly and cross-compiling, as well as some possibly unreleased stuff, such as source code for the unreleased prototype of Ms. Gorf.


At this time, it's not clear exactly how much stuff there is, or how much we can get working in emulation. But this is a fairly exciting development and I wanted to share the news!
  • Like 4
Link to comment
Share on other sites

 

Jamie Fenton is the creator of the arcade games Gorf and Robby Roto, as well as the Astrocade game system, OS and Bally Basic.
She recently donated a bunch of items to the Computer History Museum in Mountain View, CA. Along with various documents, the collection contains
an original development system that was used to create and debug software for these platforms.
The development system is called an "icebox" - a floppy disk-based Z80 system used as a substitute "CPU and memory", working with the target system hardware. It was used to write programs in Z80 assembly, as well as Terse - a version of the Forth programming language. An early version of the system ran CP/M, but later it was modified to boot a Terse-based OS.
Information from this collection is available here:
The MAME team is now working on emulating the development system. It can already boot the Terse-based OS in emulation.
A number of disk images were also donated, and they are currently being looked at. They contain source code snippets and binaries for various arcade machines and Astrocade programs, tools for assembly and cross-compiling, as well as some possibly unreleased stuff, such as source code for the unreleased prototype of Ms. Gorf.
At this time, it's not clear exactly how much stuff there is, or how much we can get working in emulation. But this is a fairly exciting development and I wanted to share the news!

 

 

I know we'd all like to see the original version of Robby Roto and maybe even Ms. Gorf if you find them on those disk images!

Link to comment
Share on other sites

[Jamie Fenton] recently donated a bunch of items to the Computer History Museum in Mountain View, CA. Along with various documents, the collection contains an original development system that was used to create and debug software for these platforms.

The CP/M development system can be seen in a couple of videos on YouTube with Jay Fenton. Jamie has done so much for the arcade community. Jamie, if you're reading this... you're awesome!

 

The development system is called an "icebox" [...] An early version of the system ran CP/M, but later it was modified to boot a Terse-based OS.

TERSE is such an odd language. If a TERSE compiler can be found in this documentation, then that would be a windfall! I understand that Gorf actually has a TERSE interpreter built into it. I wonder if Jamie had any ZGRASS stuff in there? There is a system that needs to be emulated-- but that's hard to emulate when the system hardware and software are not easy to come across.

 

Information from this collection is available here:

http://bitsavers.org/pdf/nuttingAssoc/

 

I urge all readers here to take a look through the above link. You'll find that the source code for "AstroBASIC" is called "Bally BASIC 3.5. The final version of the source code (which seems to be from the same document source as the one on BallyAlley.com) is December 4, 1980. It's also really neat to see the way Jay set up the source code as code snippets that are linked together. I have to take a much closer look at all of this documentation.

 

I didn't notice any source code for the extended BASICs (Vipersoft BASIC, Blue Ram BASIC, and Hot Rod BASIC) for the Astrocade. If you any of that is available, then that would be so cool too!

I find it rather neat (and a great compliment!) that there are resources in that archive that Jamie donated that are from BallyAlley.com-- even some documents that I wrote. How very weird!

 

Please, if you get a chance, then look at the wonderful resources that are now online. Maybe (hopefully!) there will be more to come!

 

The MAME team is now working on emulating the development system. It can already boot the Terse-based OS in emulation.

 

MAME programmers/authors; you're all wunderkind! Good luck getting the OS running, and maybe finding the source code to some of the arcade games.

 

"128Kgames" games said, "I know we'd all like to see the original version of Robby Roto." That might be a weird statement. What Michael meant by that is that in comments made by Tom Meeks in 2001 (http://www.ballyalley.com/ballyalley/interviews/tom_meeks.txt), he said:

 

"Robby Roto, BTW, wasn't created until just before we filed for Chapter 11. While in development, it was THE most fun game I have ever played. Unfortunately, the Midway brass force DNA to change it so that it played shorter... and, it absolutely ruined the game. The game released to the field was, to me, only a poor shadow of what it had been in the latter stages of development. If anyone could find THAT code then they would really have something."

 

I doubt that this "missing" game will ever surface, but if it did, then it would be similar to the early version of Wizard of Wow that came out of nowhere a few years ago.

 

A number of disk images were also donated, and they are currently being looked at. [...] At this time, it's not clear exactly how much stuff there is, or how much we can get working in emulation. But this is a fairly exciting development and I wanted to share the news!

 

Thanks for letting us all know about this great donation and for continuing to save the heritage of the videogame community.

 

Adam

Link to comment
Share on other sites

 

Jamie Fenton is the creator of the arcade games Gorf and Robby Roto, as well as the Astrocade game system, OS and Bally Basic.
She recently donated a bunch of items to the Computer History Museum in Mountain View, CA. Along with various documents, the collection contains
an original development system that was used to create and debug software for these platforms.
The development system is called an "icebox" - a floppy disk-based Z80 system used as a substitute "CPU and memory", working with the target system hardware. It was used to write programs in Z80 assembly, as well as Terse - a version of the Forth programming language. An early version of the system ran CP/M, but later it was modified to boot a Terse-based OS.
Information from this collection is available here:
The MAME team is now working on emulating the development system. It can already boot the Terse-based OS in emulation.
A number of disk images were also donated, and they are currently being looked at. They contain source code snippets and binaries for various arcade machines and Astrocade programs, tools for assembly and cross-compiling, as well as some possibly unreleased stuff, such as source code for the unreleased prototype of Ms. Gorf.
At this time, it's not clear exactly how much stuff there is, or how much we can get working in emulation. But this is a fairly exciting development and I wanted to share the news!

 

 

Very cool! I saw one of the folders in that link is for ZGRASS - did Jamie actually still have the source code on hand to run that? Could it actually get emulated?

Link to comment
Share on other sites

There were only fragments of an early zGrass in the boxes of paper.

I thought it was important to get that saved, though.

 

Definitely. I guess it comes back around to trying to get Tom DeFanti to agree to donate/dump his data tapes of ZGRASS, since it seems as though he's the only one who has the full thing. This is still really cool, though. Will her materials eventually be made available to researchers?

Edited by ubersaurus
Link to comment
Share on other sites

[Jamie Fenton] recently donated a bunch of items to the Computer History Museum in Mountain View, CA. Along with various documents, the collection contains an original development system that was used to create and debug software for these platforms.

I've been going through the pictures and documentation. The TERSE source code for is for "BASEBALL." I think it's for Tornado Baseball. Is TERSE one of the earliest uses of programming arcade games NOT in assembly language?

 

I love the pictures of the development system that Jay Fenton used for programming in the late-1970s/early-1980s!

 

Adam

Link to comment
Share on other sites

I don't think TERSE was an arcade game language, though I don't know if Fenton used it on Gorf. Tom McHugh always coded in assembly, up to and including Wizard of Wor. By the 80s I believe that Forth had an adherence in some places and Atari had definitely developed an internal scripting language of some sort.

 

Jamie told me about some of this stuff she had accrued so I'm stoked it's going to a good home. CHM is quickly becoming the technical counterpoint to the sociological bent of the Strong Museum.

Link to comment
Share on other sites

I was really glad to hear this. I also immediately thought about Ms. Gorf and the fabled better version of Robby Roto that didn't try to eat your quarters quite so much. There are three versions of Robby Roto source code on-line now, dated 11-20-1981, 12-7-1981, and 12-9-1981. I don't know when those changes were made, but that seems promising.

 

What's the status of archiving Jamie Fenton's disks? I believe there was some trouble with these before. I'm not quite sure if it was actually a problem reading the disks, or if all the binary data was captured and it was merely a question of how to interpret it. In the latter case, I imagine the development system would help quite a lot.

Link to comment
Share on other sites

Funny about the Roto thing, in the footage out there with Jamie back in 1982 she said they retooled the game after a showing at the AOE show in March. It might be that all the versions of the source code were before that point but I don't think anyone's tried to compile that yet.

Link to comment
Share on other sites

  • 2 weeks later...

When I was first working on the Astrocade driver in MESS, I generated this HTML file with the equation I was using in the emulator:

 

http://www.ballyalley.com/ml/ml_docs/astrocade_palette.html

 

I'm honestly not sure if it's been approved upon since then, and I'm not sure I have the python script anymore :(

That said, MAME still uses the same (maybe identical) code to generate the palette:

 

https://github.com/mamedev/mame/blob/4263a71e64377db11392c458b580c5ae83556bc7/src/mame/video/astrocde.cpp#L78

 

-Frank

Link to comment
Share on other sites

What is the color palette for the Bally Astrocade?

 

The Astrocade has a palette of 256 different colors. Here's a link to them all:

 

http://www.ballyalley.com/ml/ml_docs/astrocade_palette.html

 

Without using any machine language "tricks," a normal screen can display eight colors. The left and right sides of the screen can be divided anyplace (many games do this right down the center of the screen, but this doesn't have to be the case). This allows four colors on the left side of the Horizontal Color Boundary and and four colors on the right side of it. Most games usually choose to share some colors on both sides of the screen. This means that many games, effectively, use just six colors. However, using interrupts, it's possible to get all 256 colors on the screen at one time. I can't think of any games that use all the colors at once, but there are a few demos that show all the colors at once, such as the aptly named 256 Color Display, which was reprinted in the "AstroBASIC" manual.

 

Some games, such as the title screen for Treasure Cove

 

 

and the gameplay of War

 

 

do show off quite a bit of color. For a game system that finally was released in January 1978, this was very impressive for the time.

 

Adam

Link to comment
Share on other sites

When I was first working on the Astrocade driver in MESS, I generated this HTML file with the equation I was using in the emulator:

 

http://www.ballyalley.com/ml/ml_docs/astrocade_palette.html

 

We're two ships crossing in the night! While I was writing a reply to this palette question, Frank came along and posted the same link. It's cool that people are paying attention to this thread. Oh, and, Frank, thanks for making that color listing so many years ago.

 

As an aside, since this is a programming thread, this morning I tested a high-res cartridge using the Astrocade emulation in MAME. It doesn't work quite right (I suspect because the Astrocade emulator doesn't technically support hi-res mode, even though the Astrocade chipset used in arcade games does use hi-res), but this cartridge does work a real Astrocade that has been upgraded to use hi-res mode. I'll be testing this program more as the week progresses. The demo isn't ready for public use yet (it'll be quite a while, actually), but when it is, I'll be sure to post more about it. Oh, and I didn't write it. It was written by Michael Matte, who upgrade his Astrocade to be able to use hi-res mode in about 1986 or so.

 

Adam

Link to comment
Share on other sites

What is the color palette for the Bally Astrocade?

 

Here is an example of the 256 Color programming running under the Machine Language Manager cartridge:

 

https://www.youtube.com/watch?v=X27RyCpfWQo&t=649s

 

This program will also run under "AstroBASIC." This 256 color program was captured via an Astrocade hooked up via RF, into an RF demodulator (getting composite out) and then converted to HDMI. By the time the video is uploaded to YouTube, there is a bit of screen tearing that you would not see on an actual CRT TV. The only way to get a more accurate picture, I guess, is to take a picture of the program running with a camera using a slow shutter speed.

 

I hope that this gives a rough idea of the colors that are available on the Astrocade. With so many color to choose from, how will we ever use all these colors in one program?!? ;-)

 

Adam

  • Like 1
Link to comment
Share on other sites

  • 10 months later...

An In-Depth Look At... Series: A Supplement to the "Nutting Manual"
By MCM Design (Michael Matte).

 

This multi-part programming tutorial series, first "published" online in July 2019, focuses on programming in Z80 assembly language and machine language. Special attention is paid to specifically programming the Bally Arcade/Astrocade, with an in-depth look at the "Nutting Manual." Specific instructions, Z80 programming examples and links to useful Astrocade/Z80 documents are provided. This series is initially set up for a beginner interested in programming in assembly language or machine language.

 

Here is a link to the main page of the series:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html

 

Note that most of these tutorials are RTF (Rich Text Format) documents. Many common word processors (such as Microsoft Office) can open these documents, including the freely available Open Office suites.

 

The series has its own thread on AtariAge.com, here:

 

https://atariage.com/forums/topic/293889-an-in-depth-look-at-series-nutting-manual-supplement/

 

Michael Matte, the author of the series, would like all comments and questions about the "In-Depth" series to be posted in the above thead.

 

It is the hope of both Michael and myself that this series provides the information needed for a neophyte Z80 programmer who wants to investigate how to specifically program the astrocade using the many routines built into the system.  Perhaps, some individuals will even be spurred to create some homebrew software.

 

Adam

Link to comment
Share on other sites

  • 7 months later...

I added an article to BallyAlley.com called "Hacking 'Astro Battle' ('Space Invaders') on the Bally Arcade/Astrocade" by Adam Trionfo.

 

Astro_Battle_Screenshot_01.png.4e70ad409d5de56764353e7c88ff0d5f.pngEditing_Astro_Battle_with_Hex_Editor.thumb.png.e913a11bde31cabef916149bf5604826.png

 

This article, which I compiled today, is an edited and expanded collection of postings originally made to the Bally Alley discussion group in August of 2011 that give an overview of how to modify the "Astro Battle" game cartridge, which is Astrocade, Inc.'s 1979 version of "Space Invaders." Included is the binary ROM image for a hack to get rid of the bunkers in the game as well as explanations on how to hack the ROM or use an available Z80 disassembly of the game to make more modifications, such as adding up to 255 lives.

 

Other members of the Bally Alley discussion group, especially Lance Squire, added plenty of their own work to the threads that eventually sprang forth from the original topic of discussion.

 

You can read the article here and download the binary for a few of the hacks, here:

 

https://ballyalley.com/ml/ml_docs/Hacking_Astro_Battle/Hacking_Astro_Battle.html

 

This article may seem a bit piece-meal, but I did my best to include the important information from the threads that took place on the Bally Alley discussion group. I have wanted to post this as an article for nine years but I wanted to make it "perfect" first.  I realize I don't have time for that to happen, so sometimes the tense in this article might seem a little "off." Also, if any information seems missing from this compiled article, then read the individual postings at Groups.io.

 

I was prompted to write this article when Michael Matte asked me some questions on how to use a Windows hex editor.  I thought I'd make a video using a hex editor to hack "Astro Battle" to get extra lives.  This provoked me to re-visit these original hacking posts and I was able to pull an article together with the various threads that materialized back in August 2011.

 

I have hopes that this article will inspire non-hackers to hack an Astocade game for the first time.  I promise, it's not as hard as you think

 

Have fun!

 

Adam

Link to comment
Share on other sites

  • 3 years later...

Hi,

 

I just set up my Astrocade after some time, and of course played every game on it in one day and now itching to bang out some Z80.   Has anybody developed a bank switching cart for it?  If not, anybody got some easy ideas on a port that isn't used that the cart has access to?  We could also pick a single memory location and watch it for a specific value.  It isn't important right now, but based on my "plans" it would prove useful.  Lastly, on the Backbit it says the max rom size is 8k, same question, anybody thinking about a hack to allow for a much larger ROM size.  Should be straightforward as it has been done extensively on other systems, but I am not a pro for sure.

 

Lastly, has anybody clocked the Z80 to see how many palette changes can be done per line?  I know you can do the split screen, was wondering if anybody has done it on the fly.  Looking forward to doing some work on this, first step is to figure out how to get the "IDE" setup and bang out some stuff on an emulator.  I may buy the Backbit just to run code although it looks easy enough to mod a cart and put a ziff socket on a board - there is nothing to them, looks like straight run.

 

Thanks,

 

Chris

Link to comment
Share on other sites

2 hours ago, chjmartin2 said:

I just set up my Astrocade after some time, and of course played every game on it in one day and now itching to bang out some Z80.   Has anybody developed a bank switching cart for it?  If not, anybody got some easy ideas on a port that isn't used that the cart has access to?  We could also pick a single memory location and watch it for a specific value.  It isn't important right now, but based on my "plans" it would prove useful.  Lastly, on the Backbit it says the max rom size is 8k, same question, anybody thinking about a hack to allow for a much larger ROM size.  Should be straightforward as it has been done extensively on other systems, but I am not a pro for sure.

 

Lastly, has anybody clocked the Z80 to see how many palette changes can be done per line?  I know you can do the split screen, was wondering if anybody has done it on the fly.  Looking forward to doing some work on this, first step is to figure out how to get the "IDE" setup and bang out some stuff on an emulator.  I may buy the Backbit just to run code although it looks easy enough to mod a cart and put a ziff socket on a board - there is nothing to them, looks like straight run.

 

Hey, Chris,

 

I'm glad you had fun playing with your Astrocade again.  Yes, it's a great system with too few games.  You may get more information and faster feedback on the Astrocade discussion group on groups.io, here:

 

ballyalley@groups.io | Home

 

You may even want to repost your message there (in which case, I'll re-post my reply there too).

 

The 8K cartridge ROM size is certainly limiting now, but it was rather large for 1978.  The 50-pin edge-connector on the back of the unit was meant to be used for future expansion, but that was never used for any first-party products.  It was used for third-party expansions, both in the 1980s (like the Blue Ram) and in modern homebrew products (for example, the Lil' White Ram).  There was a bank-switched cartridge made in 2011 called the "MaxFlash," but it never went into final production.  It had banks of 512K.  You can read more about it here:

 

Bally/Astrocade Maxflash Files (ballyalley.com)

 

I don't know how many colors can be fit on a line.  MAME Astrocade emulation isn't accurate enough to figure this out, so you'd have to check on real hardware.  You might also be able to get a pseudo hi-res mode if you use the custom chips and program them like the Atari 2600 and "race the beam," but then that might defeat the point of programming for the Bally Arcade.

 

I wrote an article that may help you get going with setting up an IDE for the Astrocade, here:

 

Bally Alley - PS Pad and Zmac Assembler Set-Up

 

One fact to keep in mind is that you can, of course, use any Z80 assembler that you want to program the Astrocade, but the "Home Video-Game Library" equates for use with the Bally Arcade console's built-in subroutines were re-written for using with the ZMac assembler going on 20 years ago.  This makes using ZMac a snap to program the Astrocade.

 

Good luck and I hope that you program the next great Astrocade game, utility or whatever program suits your tastes.

 

Adam

Link to comment
Share on other sites

  • 5 months later...
On 10/9/2023 at 12:03 PM, ballyalley said:

 

Hey, Chris,

 

I'm glad you had fun playing with your Astrocade again.  Yes, it's a great system with too few games.  You may get more information and faster feedback on the Astrocade discussion group on groups.io, here:

 

ballyalley@groups.io | Home

 

You may even want to repost your message there (in which case, I'll re-post my reply there too).

 

The 8K cartridge ROM size is certainly limiting now, but it was rather large for 1978.  The 50-pin edge-connector on the back of the unit was meant to be used for future expansion, but that was never used for any first-party products.  It was used for third-party expansions, both in the 1980s (like the Blue Ram) and in modern homebrew products (for example, the Lil' White Ram).  There was a bank-switched cartridge made in 2011 called the "MaxFlash," but it never went into final production.  It had banks of 512K.  You can read more about it here:

 

Bally/Astrocade Maxflash Files (ballyalley.com)

 

I don't know how many colors can be fit on a line.  MAME Astrocade emulation isn't accurate enough to figure this out, so you'd have to check on real hardware.  You might also be able to get a pseudo hi-res mode if you use the custom chips and program them like the Atari 2600 and "race the beam," but then that might defeat the point of programming for the Bally Arcade.

 

I wrote an article that may help you get going with setting up an IDE for the Astrocade, here:

 

Bally Alley - PS Pad and Zmac Assembler Set-Up

 

One fact to keep in mind is that you can, of course, use any Z80 assembler that you want to program the Astrocade, but the "Home Video-Game Library" equates for use with the Bally Arcade console's built-in subroutines were re-written for using with the ZMac assembler going on 20 years ago.  This makes using ZMac a snap to program the Astrocade.

 

Good luck and I hope that you program the next great Astrocade game, utility or whatever program suits your tastes.

 

Adam

Would anyone be interested in starting a bring-up of FujiNet to the Astrocade? It could potentially work using the RP2040 as a front-end to the ESP32 running the network stack, and connecting via the expansion port.

 

-Thom

Link to comment
Share on other sites

56 minutes ago, tschak909 said:

Would anyone be interested in starting a bring-up of FujiNet to the Astrocade? It could potentially work using the RP2040 as a front-end to the ESP32 running the network stack, and connecting via the expansion port.

 

-Thom

That would be cool, of course, but my first question would be would Fujinet even be able to be run on such low spec hardware? It's only been developed for/ported to computers (and one 16-bit handheld console) that have plenty (relative) of working RAM to this point, among other advantages over something like the Astrocade.

Link to comment
Share on other sites

2 hours ago, Bill Loguidice said:

That would be cool, of course, but my first question would be would Fujinet even be able to be run on such low spec hardware? It's only been developed for/ported to computers (and one 16-bit handheld console) that have plenty (relative) of working RAM to this point, among other advantages over something like the Astrocade.

Yes. One is being developed for the Atari 2600, that is extending PlusCart.

rn_image_picker_lib_temp_3b46a179-c31d-465a-ad4d-e4df0647f745.jpg?ex=65ff529e&is=65ecdd9e&hm=5d5796d592b1c7df076c795c00dc9e630a6a1e70a30a1c1e0c60388d633104bd&=

 

On the Astrocade, you have a full system bus via the expansion slot.

 

-Thom

Link to comment
Share on other sites

4 hours ago, tschak909 said:

Would anyone be interested in starting a bring-up of FujiNet to the Astrocade? It could potentially work using the RP2040 as a front-end to the ESP32 running the network stack, and connecting via the expansion port.

 

I don't know what the RP2040 or the ESP32 are for FujiNet, but, yeah, FujuNet on the Astrocade would be cool.  I don't even have FujuiNet on my Atari 8-bit yet.  Which is why tomorrow for Baud Day (3/12/24) I'm using a 300-baud modem to access Atari and BBSs.  Sad, Adam, sad.  But fun!

 

Adam

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...