Monday, 29 August 2016

programming + coffee

Is coffee necessary for programming?

This project is the first time I have done any "serious" programming since mostly giving up coffee earlier in the year.

Will a glass or two of red in the evening help the late night creativity?

off track already...

Well that didn't take long.

The morning after the "onto something different" post I decided to start on the Atari 2600 game straight away after all :)

It's a game I intended to do after finishing (the still unfinished) Laseral in 2002.

Not revealing game details yet.
So far using 31 bytes of RAM (of 128 (probably need another 4 or so for stack)), and 506 bytes of ROM (of 4096 - no bank switching for this one).

Saturday, 27 August 2016

Atari 2600 test program

With a little practice simple stuff (AKA stuff it's suited for) on the 2600 is quite straight forward.

I didn't expect this to take too long. Of course it did take 3 times as long as I expected. I guess after 14 years away I'm a little rusty.


source & binary attached (tested under z26 emulation)

The Atari 2600 is such fun to develop for until you try to go a little too far then suddenly you run out of RAM (only 128 bytes!) or ROM space (only 4K without bank-switching) or CPU cycles while drawing that scanline (only 76 cycles per scanline and when you don't have a frame buffer there is often a lot you'd like to do while displaying that scanline!).
Then it becomes both more fun, more challenging and more infuriating...

Now I've got the taste of it again it's tempting to go full on into 2600 programming again (and go off track after only 1 day).
I'll resist and try my hand with something different next time.

TRS-80? Atari 8-bit?

I doubt any of the other introductory programs will be this easily developed though. All of the other platforms are both more complex and less familiar.


Atari 2600 toolchain

This one should be the easiest to set up. I'll just use the same tools I used in 2002 when I last did Atari 2600 stuff.

It took a little longer to find the new versions and decide how to integrate them (only about an hour, so off to a good start).

When I last did some Atari 2600 development back in 2002 I had a Cuttle Cart and a real Atari 2600 to test with. Unfortunately I got rid of all my retro hardware a little while back (well except the Cuttle Cart - much harder to replace that :)).

Assembler: dasm
emulator: z26

z26 is an excellent emulator with an incredibly useful tracing feature.
This can create a log of all instructions executed with some other useful things like the frame number, scanline number, cpu cycle, tia clock, object positions (P0, P1, M0, M1, BL), cpu flags, registers (A, X, Y, SP), the program counter and a disassembled listing of the instruction.

Timing is critical when producing an Atari 2600 screen, this level of logging detail can be an enormous timesaver when juggling those instructions for mid-scanline graphic register changes.

meta - tools

operating system

As much as is possible the preferred development platform is Mac OS X (generally a little less annoying than the alternatives).
If necessary Linux or Windows hosted toolchains will be used.

editors

Of course a good editor or two is the programmer's most important tool.
  • Qt Creator
    • my preferred simple IDE
  • vim
    • sometimes a quick edit from the command line is all that is required
Both of these are available on Mac OS X (also Linux and Windows if necessary).

planned path through this foolishness

toolchain

The first step for each platform is to identify the tools required to produce the programs.
  1. An assembler and/or compiler (and related tools) to convert the program source into an executable program.
  2. An emulator to run the program (I don't currently have access to any of the real hardware, hopefully I will manage to run some of the code on real hardware at some stage)

test / demo program

Create a small sample program to test the toolchain and experiment with the platform capabilities.

create game

After creating a test program for each platform go back and actually create a game on each platform.

Friday, 26 August 2016

past follies?

is there a previous history of such foolish behaviour?

as yet unfinished - maybe after the current newer folly?

intro

FAQ ~ FQA

what is Wally's Folly

An attempt to create a game (or at least the core of a game), on several retro gaming platforms.

is it really going to happen? I've heard you often don't finish projects...

...maybe...

what are the intended platforms?

  • TRS-80
  • Atari 2600
  • Atari 8 bit (400, 800, 800XL, 130XE)
  • Commodore 64
  • Atari ST
  • Commodore Amiga
  • Mega Drive / Genesis
  • Neo Geo

really? is that all?

well maybe
  • Vectrex
  • VIC-20
  • Super Nintendo
  • Xbox One
are a little interesting too

why were these platforms chosen?

I've used many different gaming and computer platforms over the years and for one reason or another these are the ones drawing me in. 
Hopefully as each platform is added I will remember to give some notes explaining why this is an interesting choice (to me at least 🙂).

this seems like a lot of work for not professional or commercial gain...?

...