Thursday, 15 December 2016

space car '78 release

I had originally expected, even when thinking of targeting a dozen or more platforms, to create several Atari 2600 games before tiring of it ... but I have been researching the Atari 8 bit recently and I am keen to get to this platform sooner rather than later... so this is the end of the Atari 2600 work for a while.

spacecar78 (NTSC).a26
spacecar78 (PAL).a26

control car with joystick (left / right) - I wasn't happy with driving controller support, so backed out on that.

title screen
title screen
select difficulty, 50 / 60 Hz
select difficulty
50 / 60 Hz (PAL only)
some road...
some road...
some more road...
some more road...
still more road...
still more road...


Tuesday, 29 November 2016

name placeholders...

plausible names for future games to come, some will happen, some will not...
  • sploort! ‘76 - maybe more of an art piece than a proper game (Atari 2600 / Atari 8 bit)
  • splitting hairs '77 - a mysterious thing (Atari 8 bit / Mega Drive)
  • dart ‘78 - sliding (Atari 2600 / Atari 8 bit)
  • v-type ‘78 - vertical shooter, maybe a pun in the name too (Atari 8 bit)
  • cage ‘79 - capture them (Atari 8 bit)
  • greed '79 - before it's too late (Atari 8 bit)
  • h-type ‘79 - horizontal shooter, don't think this one is a pun (Atari 8 bit)
  • balance ‘80 - balancing the various challenges of life (Atari 8 bit)
  • the tranquility of solitude '80 - just a title for now (Atari 2600 / Atari 8 bit / Mega Drive)
  • triffids '80 - survival (Atari 8 bit)
  • blockotron ‘81 - shooter (Atari 2600 / Atari 8 bit / Mega Drive)
  • froth '82 - nothing / everything (Atari 8 bit)
  • lucre ‘82 - get the money (Atari 8 bit)
  • fanorona ‘82 - fanorona (Atari 8 bit / Mega Drive)
  • jarndyce '83 - hopper (Atari 8 bit)
  • bloody shambles, of course '84 - driving / shooting (Atari 8 bit / Mega Drive)
  • leech boy and tick girl '84 - just the name for now, inspired (tenuously) by real world events (Atari 8 bit / Mega Drive)
  • creep '85 - maze thing
  • perpetual man child '89 - runner (Atari 8 bit / Mega Drive)

Friday, 11 November 2016

space car '78 progress...

I haven't been working on this much... slowly making progress
Too many other things to do, games to play...

spacecar78-alpha-NTSC.bin
spacecar78-alpha-PAL.bin

title screen
title screen
select difficulty, 50 / 60 Hz
select difficulty, 50 / 60 Hz
some road...
some road...
some more road...
some more road...
still more road...
still more road...

Wednesday, 2 November 2016

platform 3 - Mega Drive

I haven't been going forward with spacecar '78 as quickly as expected for various reasons - one of which might be the arrival of platform 3 the Mega Drive.

The EverDrive cartridge allows loading of mega drive binaries from SD card and is the easiest method I found to allow running my code on the Mega Drive.

At the current rate I might not get to programming the Mega Drive for a year or two - at least I can use it for "research" during that period :)

Mega Drive II
EverDrive MD

SIO2PC USB action shot

SIO2PC USB action shot
SIO2PC USB action shot

Thursday, 6 October 2016

Sio2pc USB - Atari 8 bit peripheral emulator

Another recent arrival from lotharek in Poland - connect the serial port of an Atari to a PC USB port to emulate Atari peripherals - disk drives, cassette player, printer (text).

This will probably be the easiest way to execute my code on the 8 bit hardware.

Wednesday, 28 September 2016

Atari 8 bit is real too

newly arrived today (I had an 800XL back when they were leading edge)

Atari 130XE


Tuesday, 27 September 2016

Atari 2600 denial '77 release notes

The first product of my retro programming project is (almost?) done.

denial '77 (Atari 2600)

denial '77 (NTSC)
denial '77 (PAL)


PAL mode (50Hz) has been tuned separately from NTSC but is still probably a little easier than NTSC or PAL60 (maybe I should create NTSC55 & PAL55 and split the difference?)

If no obvious problems are found, this will be the final (or at least initial final :) version).

The game is loosely modelled on Space Zap, an arcade game from 1980.

setup

Left player difficulty sets game difficulty
Right player difficulty sets starting level (1 or 14)
Reset or joystick button to start.

gameplay

You're protecting the base in the centre, move the joystick in the direction you want to fire.
The base heats up when you fire, changing colour and expanding. The base firing rate slows as the base heats up.
The base also heats up when hit. It's game over if the base hit when it is overheated.
The level number is the only scoring mechanism.

scores

If anyone tries it out I would be interested to know what level you attain - and whether it was using an emulator or real hardware, easy or hard, 60Hz or 50Hz.

waffle

This was always intended to be my warm-up game as I returned to Atari 2600 programming after a 14 year hiatus.
It is lacking some polish generally found in modern 2600 games (separate title screen, option screen, more detailed scoring, game over screen, multiple chances etc.). Maybe it's more like a quick and dirty cash-in game from 1978 :)
Part of me wants to go back and make it "the best it can be" and fix some of the "naive coding choices", but another part of me says I have other games I want to do on the 2600 and the Atari 8 bit (and other platforms) so this is probably it for this game.

Monday, 26 September 2016

another reason to delay - eBay AV 2600 arrival

The Atari 2600 Jr. with AV conversion which I bought on eBay arrived today. Of course I set this up for testing instead of finishing denial '77 - any excuse for delay :)

Well, it certainly generates an AV signal rather than the RF signal. Unfortunately it is not the correct signal.
This was tested on 4 TVs using 3 different display technologies (CRT, plasma, LCD) and was consistently wrong on each one.

The new eBay purchased 2600 + AV (photograph of plasma TV with phone camera) - the image produced is more stable than the RF one but most of the colour information is missing.

Most of the colour luminance information seems to be missing. Rather than providing a range of luminance in each colour it produces a single luminance, white and black for each colour.



crappy display, but at least the colours are correct
My other RF connected 2600 (photograph of plasma TV with phone camera) - the image produced is not as good as I would like, but at least all of the colours are produced.
perfect emulator version for comparison - sadly the real version will never look this good :)

future planning - space car '78...

instead of finishing the warm up game denial '77 (hopefully finished this week) I've been thinking about later parts of the project

other games planned to some level

Atari 2600
next game: space car '78 (Atari 2600)
the other next game: unnamed '78 (Atari 2600)
(maybe) endless / auto runner

Atari 8 bit
(theme) responsibilities - balancing the responsibilities of life
(genre) up screen shooter
(genre) horizontal shooter
(genre) dungeon crawler / shooter
(genre) endless / auto runner
(genre) platform
... does the Atari 2600 driving controller work here (quite likely)

Mega Drive
... no real plans yet, just know I want to do this one

Uzebox
interesting new platform under consideration Uzebox...

new hardware MIST which could be used for the project...

new platform candidate... Uzebox

not technically a retro platform but … The Uzebox is a retro-minimalist homebrew game console...

Friday, 23 September 2016

denial '77 alpha 4 binaries

denial '77 alpha 4 (NTSC) autoplay
denial '77 alpha 4 (NTSC) manual

Transition between title mode and game mode not yet implemented so here's one in each mode.

Can now destroy attacking enemies.
Fine tuning of attack timing, overheating, base firing etc. underway.

Monday, 19 September 2016

denial '77 alpha 3 binaries

Well, I worked out why Stella was having problems - it all came down to the initial state of the emulated machine. Both the z26 emulation and the real Atari initialised the memory / registers into a more benign state. Yes I had introduced a bug into my startup code. Fixed.

denial '77 alpha 3 (PAL)
denial '77 alpha 3 (NTSC)

platform rationalisation

It's not too surprising, but I am now questioning the likelihood of getting to all of the previously mentioned platforms...

They all are interesting to me for various reasons, but now that I have been working on this for a few weeks the relative desire to work on these platforms has been changing.

still highly motivated

  • Atari 2600
  • Atari 8 bit (800XL...)
  • Mega Drive
a little less motivated
  • TRS-80
  • Vectrex
  • Commodore 64
  • Neo Geo
not so much anymore
  • VIC-20
  • Atari ST
  • Amiga
  • Super Nintendo

Sunday, 18 September 2016

denial '77 alpha 2 binaries

Lots of experiments, lots of "it's not quite working and I don't want to go to a 2 line kernel here just yet" moments. Still learning :)

Added auto-play for title / attract mode.
Next: enemy attack logic

This version seems to cause problems for Stella (and the previously mentioned javascript emulator)...

denial '77 alpha 2 (PAL)
denial '77 alpha 2 (NTSC)

RAM used: 63 bytes (65 remain)
ROM used: 2035 bytes (2061 remain)

Thursday, 15 September 2016

first 5 a.m. finish yesterday

couldn't sleep - tried programming instead - threw most of it away - learned stuff along the way
gratuitous alpha screenshot

javascript Atari 2600 Emulator

Atari 2600 Emulator
load Atari ROMs from disk, or drag & drop files and links

this works well, but maybe not quite as accurate as z26 or Stella

Monday, 12 September 2016

vague non-committal update #1

Atari 2600 game 1


  • title: denial '77 (a simple game inspired by 1980 arcade game Space Zap)
  • sound effects tested - sound ugly, but I know how to make sounds now :)
  • all critical graphic objects now working with some screen draw cycles left over so may add some more details
  • enemy 'AI' underway

Future games...

Several partially formed ideas have bubbled up for future games in this project
  • Atari 2600
    • title: responsibility (...)
    • title: crushing despair (I know, fun right...)
    • something using a driving controller as one came with 2600 I bought last week - maybe a driving game, or a super hectic auto-firing shooter
  • Atari 8 bit
    • some sort of endless runner (nice smooth scrolling features in these machines)
    • derivative vertical / horizontal shooter
    • derivative platformer
    • does the Atari 2600 driving controller work here?
  • C64
    • maybe one or more of the same games as the Atari - interested to contrast the approaches to the same problems
  • TRS-80
    • denial '77 remake denial '78
    • arcade variant of daleks?
    • will need to look at some old TRS-80 games for ideas about what works well

Saturday, 10 September 2016

Thursday, 8 September 2016

Tuesday, 6 September 2016

it's all starting to get real :)

After reaching a technical milestone I decided that I really want to be able to run the code on a real 2600.

It took a bit of hunting before I found a working 2600 at a price I was willing to pay. Various were found ranging from $10 (parts only) to $399 (wonderfully presented, but $399 !).

In the end I found a 4 switch woody with 3 joysticks (including one of the awful original ones which still works) and a driving controller (untested but hopefully working), and a new power supply (+ the frayed cord original one) for less than $100.

Well, maybe 3 ½ switch as the game select switch is broken and needs a screwdriver or similar to reach - but it does work.

4 switch woody + Cuttle Cart

Atari 2600 resources

some places I found information

VCS Programming
2600 Cookbook
2600 Programming For Newbies

Monday, 5 September 2016

Ooh look another track over there...

Even before finishing the first Atari 2600 game, which is already counter to the original plan, another 2600 game idea has appeared nearly fully formed...

A (fun?) game about balancing the various responsibilities of life :)

When will I manage to get onto the next platform?

why Atari 2600?

from Atari 2600 homebrew (Wikipedia)

"The Atari 2600 is generally considered to be a very demanding programming environment, with a mere 128 bytes of RAM available without additional hardware, and no video frame buffer at all. The programmer must prepare each line of video output one at a time as it is being sent to the television. The only sprite capabilities the 2600 offers are one-dimensional 1-bit and 8-bit patterns; creating a two-dimensional object requires changing the pattern between each line of video."

Atari 2600 progress...

A week has passed, there has been no coffee, and several glasses of wine and beer - yet the coding continues, so I guess coffee is not a definite requirement :)

I wasn't sure about the timing of the middle 16 lines of the screen but all of the core graphical artifacts are working without too much cycle counting (just a little code rearranging and moving bits code out of their logical location to be executed on the previous scanline etc.)


work-in-progress screenshot

Using 45 bytes of RAM (being quite carefree here - 10 extra bytes used in just 1 week!) and 1310 bytes of ROM (so 83 bytes of RAM and 2786 of ROM left to implement AI, gameplay, and a title screen...)




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

...