Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I've asked a similar question about DOS development a while ago and got an excellent answer: What was the typical toolchain for DOS game development?

Now I'm wondering what game development was like on the Apple II in the late 70s/early 80s. I'm mainly interested in the early ones: II and II+, but I'd like answers about IIe etc. as well.

So here are my questions:

What languages were used?

I presume 6502 assembler, but BASIC was bundled and probably used a lot, too. Can you think of popular games written in BASIC? How about C?

What was 6502 assembler development like?

I've noticed that you can enter op codes directly if you start the system monitor, and you can even execute assembler directly with the mini assembler. But I cannot imagine that games were written like that, were there editors/IDEs? How were programs stored on disks/tapes?

What was BASIC development like?

The Apple II BASIC interpreter is not half bad, I guess you can write full programs in there. It also allows you to SAVE/LOAD programs, I presume to disk/tape. But was there no visual editor?

Were there any APIs or Middleware?

Or was it necessary to talk directly to the hardware all the time if you wanted to draw something or play a sound? Were there any libraries at all?

Anything else that's different from today?

I'd be happy to hear any other differences, like what image/audio formats were used. Given that there wasn't really a concept of files if I understand it correctly, I'm wondering how that worked. Did you have to type your graphics and sounds in assembler? How did that work in BASIC?

share|improve this question
    
The intro to Michael Abrash's Graphics Black Book is written by John Carmack, and he talks about how easy it was to do graphics - you just did a draw command and it would automatically switch over. From what I remember from playing with it in the 80s, you could make those calls directly through BASIC. –  Philip Aug 15 '12 at 17:44
    
I've already linked to this somewhere else but... anyways, Jordan Mechner released the source code for the Apple II version of Prince of Persia. That might be interesting for you! –  Laurent Couvidou Aug 15 '12 at 19:34
    
One of the most notable quirks of the Apple II was that the graphics weren't directly memory-mapped; instead, the system used a strange sort of interleaved system where the row that followed row 0 in memory wasn't row 1 but instead was row 64; then row 128 followed that in memory, and only after that does row 1 appear. This is why you see the strange 'tri-banded' loading effects on Apple II games. –  Steven Stadnicki Aug 15 '12 at 22:16
add comment

2 Answers 2

up vote 4 down vote accepted

I did a lot of programming on the Apple (not professionally, but it's what I learned on) and Applesoft BASIC and assembler where about where it was at for hobbyists. Other languages were available -- Logo was common, Pascal was written about everywhere but I know no one who used it, I wasn't really aware of C being used on any Apple platform until Orca C for the Apple IIGS, there was a Forth interpreter with turtle-style (or call it Logo-style) graphics floating around too.

I'll address some of your questions, and then basic ideas:

Can you think of popular games written in BASIC? How about C?

A lot of shareware was written in BASIC, not only Applesoft BASIC but also Integer BASIC (which as the name implies, did not have floating point numbers). The Eamon series comes to mind, but I can't really think of many others. Also, a lot of the software written by the Beagle Bros. was done in BASIC (mostly utilities, not games).

I believe most commercial software was written in assembler, though.

But I cannot imagine that games were written like that, were there editors/IDEs? How were programs stored on disks/tapes?

I used Merlin Assembler, to call it an IDE might be stretching it, but it worked just fine. As you said you could drop to the system monitor and enter opcodes and run from there. Merlin had a way you could return to it from the system monitor (which I don't remember how now).

But was there no visual editor?

There was a third-party tool that made the Applesoft environment a bit better, and would allow you to use your arrows to scroll about the screen and make edits like a visual editor (you still had to hit return at the end of a line or the changes wouldn't stick). I can't remember what that was, I used it quite a bit.

Or was it necessary to talk directly to the hardware all the time if you wanted to draw something or play a sound? Were there any libraries at all?

On the Apple II+/IIe/IIc you pretty much were just talking to the hardware. There were a couple of programs in ROM you could use but they were very limited and usually you would PEEK and POKE various memory locations to change registers to do what you wanted, for example to change graphics modes, poke 49152 to trigger the speaker, etc.

On the Apple IIGS, the ROM came with a suite of libraries similar to what the Macintosh came with, for doing fancy GUIs and what-not. The ROMs were updated over time, and if you loaded a system disk that used newer libraries, they would read from disk rather than ROM, causing boot time to go REALLY SLOW. There was ROM 01, 02, and 03, and 02 -> 03 was a free upgrade, and there was a release before 01 which they would do a free upgrade to 01 as well.

I'd be happy to hear any other differences, like what image/audio formats were used. Given that there wasn't really a concept of files if I understand it correctly, I'm wondering how that worked. Did you have to type your graphics and sounds in assembler? How did that work in BASIC?

There were files, I am not sure what you mean by that, and ProDOS supported directories no less (the earlier DOS did not but still had a concept of a file you would recognize). I used bitmaps and .pcx's. I don't remember any audio files on the II+/IIe/IIc series, but that was because it was hard to make any noises fancier than video game blips and bloops. There were some hacks out there that did make fancy sounds (in particular, I had a disk that played Gun N' Roses), but it almost always was done grammatically.

Compared to modern environments, it was downright primitive. But remember, there was no support to run multiple programs at the same time, so your compiler effectively had to be your editor as well -- you couldn't really argue the benefits of vi vs. emacs, so whatever your compiler gave you, you learned to use. I do think it was a lot easier than using libraries piled upon libraries, and there are a lot of tricks if you are working for the hardware and know what it is. For example, a common implementation of "pause for a moment" was "for (int i=0; i<1000; i++)" (it's different in BASIC), which is never used now, because hardware is so fast that you'd need a huge number, and even if it wasn't, it would be run on different kinds of machines so it would be a different pause for different people (the II+, IIe, and IIc ran at 1MHz, and the IIGS had a setting to slow down to that from its native 2.7MHz for better running of older software).

This is all from memory, I did not look at any references while writing this, so I apologize if my memory is faulty and I told you wrong stuff. But I hope this gives you a bit of a taste and answers a few of your questions.

share|improve this answer
add comment

What languages were used?

6502 for most, rarely C (Aztek), lots of BASIC, some Pascal (Apple Pascal).

What was 6502 assembler development like?

There were some pretty neat assemblers and tools for 6502: Orca/M, Merlin, plus in the later days it was possible to develop on a PC and serial link to the Apple to remote debug. Let's not forget the Beagle Bros. utilities. Edit + compile + run, the world never changes ;-)

What was BASIC development like?

No visual editor, just a console that let you interact with the BASIC buffer in the beginning. However, Beagle Bros. had a couple magical utilities that made most of the pain go away. And later there were shells that would at least act like a line-based editor for your writing. There was also at least one tool that could crunch your BASIC down to an assembly binary that ran much faster (a one way trip).

Were there any APIs or Middleware?

There were some, but mostly of a very tight scope, nothing like what you'd call an SDK today. Let's be honest, in 48K you can't afford a general purpose API. In the later days there were two or three specific purpose SDKs that emerged for clicky adventure games, tile based games,

Anything else that's different from today?

Everything and nothing. Practices remain the same, tools got better.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.