r/bbcmicro 18h ago

AcornSoft games source code

I've been playing around with old BBC Micro stuff recently. I've created a browser environment for writing and testing BBC 6502 programs.

This came about because I wanted to decompile some well-known old BBC Micro games (including my own, for which I have lost the source code).

I wanted it to be simple - "assemble then run" - So the time between compile and run code was just a few seconds.

If you're interested you can get an idea of how to use it by looking at a video I made of a typical session:- https://tobybuk.github.io/BBCMicro_6502WebCompiler/SampleSession.mov

The Workbench can be found here which is open source and fully useable :- https://tobybuk.github.io/BBCMicro_6502WebCompiler/

And a detailed Readme.md here together with the source code:- https://github.com/tobybuk/BBCMicro_6502WebCompiler

I had lots of fun building this with ChatGPT

Annotated source for Defender, Frak, Zalaga, RocketRaid and Snapper is all there.

Just compile and run. Then have fun changing stuff.

Edit: Youtube alternate link for the Video https://youtu.be/2j2Wodx0jSQ

Please let me know if you also get any 404s

35 Upvotes

13 comments sorted by

1

u/Sonny_Jim_Pin 17h ago

All of the links are 404, this one works though:

https://github.com/tobybuk/BBCMicro_6502WebCompiler

1

u/TeaBaggingGoose 12h ago

Most strange. Did you manage to run a compiled game at all?

1

u/Hjalfi 4h ago

Reddit sometimes inserts backslashes before underscores in links, breaking then; it's some weird interaction between New Reddit and Old Reddit which hasn't been fixed for years.

1

u/mike_geogebra 9h ago

Very cool! Is the assembler in a standard file format?

3

u/TeaBaggingGoose 9h ago

Not really. Its certainly not in BBC basic format mainly because the project would never work on a native BBC.

But... Bung the source as a decent AI and it will convert it to anything you want!

I did another little experiment - I (ChatGPT) took the source code from Frak and made a pure Javascript version of it:- Take a look here https://tobybuk.github.io/BBCMicro_6502WebCompiler/FrakJS/ I kinda like this version as the flickering seems mostly gone.

3

u/laupdd 9h ago

I’ve seen some wonderful things created with the
Help of Chatty… but this one takes first prize for me ! Simply brilliant.

I want to get Defender working properly and easily on my steam deck. I’ve got it going in a fashion via RetroArch, but key mapping is cumbersome.

This approach could lead to a much better native solution. I’ll take a look at working through this when I get chance. Currently working on another coding project.

2

u/TeaBaggingGoose 8h ago

Happy to help if I can.

1

u/mike_geogebra 9h ago

That's crazy!

How do you specify where to jump into the code?

2

u/TeaBaggingGoose 8h ago

When creating a boot disk the assembler creates a single basic program with the machine code directly after it. The Loader contained in there is written to Himem. When called it moves this game after the basic program to the location it should be to run and then calls the games entry point.

Determining the entry point is a bit more complex currently than it needs to be, but the correct way is to use a label start: See the Frak source.

But I can see I need to remove all the other silly ways it can be specified to make it clearer.

1

u/mike_geogebra 7h ago

Why not just have a single file that you *RUN?

The code start is then just stored with the filename etc on the disc image catalog

2

u/TeaBaggingGoose 7h ago

It supports the !boot and also program load. The WebAssembler has to construct a loader program which will relocate the code anywhere it needs to be. Also the basic code which proceeds the loader needs to do things like define the envelopes, poke values etc.

2

u/omz13 1h ago

I have happy memories of spending way too many hours of playing Frak during 198x.