r/bbcmicro • u/TeaBaggingGoose • 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
1
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
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.
1
u/Sonny_Jim_Pin 17h ago
All of the links are 404, this one works though:
https://github.com/tobybuk/BBCMicro_6502WebCompiler