Breakdown is a game for the TRS-80 Microcomputer. It should run on any TRS-80 Model I, III or 4 with 16K or more of RAM. Breakdown is inspired by the classic video game Breakout and to a lesser degree Tetris. The goal of the game is to score as many points as possible by breaking as many bricks as possible with a bouncing ball while trying to keep the ball in play and avoiding falling bricks.
The game is a work in progress. There are currently 8 different levels in the game. If you complete all the levels then the game ends. My thought is that there will be many more different levels added to the game. Each level takes 80 bytes to define, so we could realistically easily have 100 levels on a 48K system.
Breakdown is freeware and you are free to use it for personal use.
Download the full package including instructions here
Download Breakdown
or stream Breakdown from your mobile phone to your TRS-80 using the cassette port here
Breakdown Cassette WAV (Low Speed 500 baud)
- Connect mobile device to the TRS-80 cassette port
- Type “SYSTEM”
- At *? prompt type “BREAKD”
- Click WAV link above to start playing WAV audio
- At *? prompt type “/”
Breakdown is written in Z-80 assembly. It was developed using George Phillip’s zmac cross assembler.
Breakdown in action
I originally wanted to release Breakdown as a real packaged software product, with a paper manual and pre-recorded cassette tape. This was how many TRS-80 games were sold back in the day. However, at this time, I am just too busy to go through the effort of creating the manual and tapes at the level of quality that I would require. Maybe I will do this for a future game.
Let me know how the game works for you and what features you would like to see added.
Hi Peter,
Very Nice. I thoroughly enjoyed playing the game. Very smooth paddle control on the keyboard.
Dodging the blocks is an interesting twist. Look forward to further levels. I’m addicted already.
Please put me down for the retail cassette version when your ready.
Being new to TRS-80 computing, thanks to Ian Mavric, it would be a great first cassette on my Model III.
p.s. Love listening to Trashtalk, makes my daily commute to work much more bearable.
All the Best,
Nik
Thanks for the feedback, Nik! I’m glad you enjoy the game and that you enjoy the podcast. I’ll get to work adding new levels soon.
Take care,
Pete
Can’t wait to try it! I love seeing new development on old systems. Will post after trying it on my Model 4P…
Very cool! From the video, it looks like the “ball” might be more visible if it was double-width from what it is now. If there are technical limitations then it might not be worth it, but it seems a bit tiny.
Guess I need to break out a TRS-80 emulator and give this a try.
Seems like a reasonable idea. I’ll give it a try and see how it works. Thanks, Josh!
What a fun blast from the past, thanks! As you said this is a work in progress, I do have a few comments!
First of all, the one thing I admit that drove me a little bit crazy is the randomness of the ball direction. Rather than most breakout-style games where you can control the direction (and speed of it) by where the ball hits the paddle, it appears the ball keeps going in the same direction as it was going about 90% of the time; the other 10% of the time it changes direction and speed at random. There were definitely times where that was frustratingly fun! I’d move the paddle in anticipation of where the ball was going, only to find out I was fooled! But it also made for a lot of not-so-fun frustration. That last brick on the first level took quite literally more than twice as long to hit as the previous 64 bricks put together and I nearly gave up.
With that out of the way, I have to say that I love how the paddle accelerates a bit when you hold the arrow down. It’s even a nice side-effect (whether by design or by accident) that if you switch directions while the paddle is accelerated, even the reverse motion is accelerated. Well done. I also like how the ball itself is drawn. This may be a side-effect of screen refresh, or it may also be by design, but it appears the next location of the ball is drawn before the old one is replaced which gives it a nice effect. That said, I ran this under emulation (I kick myself frequently for donating my old Model 1 to charity 25 years ago) so that refresh-effect may not even be a thing under emulation (sdltrs for Mac).
I’m also incredibly impressed that this was written from scratch in assembly. Back around 1981 I taught myself to program the Z-80 (using what I thought was a pretty great book that Radio Shack put out, “TRS‑80 Assembly Language Programming”) and wrote a fair amount of code, but it was always short routines embedded in my Basic programs to speed up screen drawing or to create sound effects – things that were simply way too slow to do in Basic. To write an entire program in assembly these days is almost unheard of, and I’m impressed that you took the time to do this now. I looked at your LinkedIn profile and you and I seem to have similar programming experience (I spend my days in Unix writing C++, Java, and PHP code along with HTML and JavaScript) and I’d be pretty lost going back to writing much of anything in Z-80!
Again, this was a lot of fun to play. It reminded me of how much fun games used to be back before everything was about intense graphics and killing everyone in sight. Well done!
Daniel, thank you so much for the detailed feedback.
Yes, I agree completely, the paddle rebound mechanics are primitive so that is on my list for improvements.
In regards to the task of writing a z80 game from scratch, I will say that modern cross assemblers and easy access to resources on the Internet make it much, much easier to write a z80 program today than compared to 40 years ago. I can use my nice modern, full-screen editor on my MacBook Pro’s hi-resolution screen, I can assemble the entire program in less than a second, and I can test on emulators immediately with nice built in debugging utilities. While I have also written some z80 programs using period correct tools, ie. TRSWiki was written on a Model I using MRAS, I still don’t know how the developers back in the day wrote complex assembly programs with floppy drives and cassettes. The assembly time must have been interminable! And some did not even have assemblers! I would never have the time or the patience to do so today.
Definitely looking forward to trying this. It would be great if this web page had a link to a 500-baud WAV file and I could just plug my diskless TRS-80 into my smartphone’s TRS-80 interface (i.e. the headphone jack) and start loading, rather than having to go to a laptop, download the zip, dezip it, and find tools to convert the CMD to audio.
The link would also be useful for people who just want to listen to some nostalgic noise.
Great idea, Al. I’ll look into it.
Cassette WAV link now provided. Thanks!
For the download link, I was expecting a wave file that could be recorded to tape, or played directly into the cassette input…?
Cassette WAV link now provided. Thanks!
Finally got to try it! Works fine on my Model 4P. It’s a terrific start – it’s a very playable game, and it’s fun. I will look forward to updates on it. So cool it was done in assembly. Bonus points for telling us what you used to develop it.
My first wish for the game is that there be a little bit better prompting as to what to do when gameplay halts. E.g. “Press spacebar to continue” sort-of-thing. Sometimes I’m sitting there, not aware the computer is waiting on me.
The second is the motion of the paddle: it appears to have two speeds and it switches from slow to fast after a delay. It’s not always easy to guess at when the paddle will speed up. Perhaps the paddle could more gracefully get to it’s faster speed by accelerating to it instead of steping to it.
Very cool! Congrats on crossing the finish line!
Thanks, Craig. I really appreciate the feedback.
Was curious if there was a way to get this on a DSK or DMK file. I’ve only just gotten a Model III over this past weekend, and was lucky enough to have already had a Lotharek’s Lair floppy emulator I had been using with a TI-99/4a. I haven’t yet figured out how to use the CAS or CMD files, although something tells me I’m out of luck in those two arenas without something besides the floppy emulator. My machine has one floppy in it, but of course I had to unplug that to boot from the floppy emulator, and I have no way to make a real boot floppy unless I can also figure out how to change the internal one’s ID to something besides 0 temporarily.
Looks like a great game from the video and would love to try it, just not quite sure how…
Excellent game — playing it right now!
Great game Pete! Play was smooth on George’s TRS80GP emulator and on my Level II, 16K, Model I. I used the CAS file and the PlayCAS 2 program to play it to my computer’s tape player input – and all worked well. Very challenging game, but fun. I also would love clearer prompts, maybe also an option to pick a larger paddle size for easier play. Also, please put me on the list for a full retro version – manual and tape – I’d gladly buy that! I’ve been in the process of learning George’s emulator, zmac, and working my way through the TRS-80 Assembly Language Programming book. I want to write a full assembly language game and your game has been a great motivator! Thank you!
Thank you as well for the podcast! I anxiously await every episode and I’ve finished listening to all of the back ones. I learn something from each episode and enjoy all of the conversation.
Thank you for the kind words, Jon. Keep on learning and make that game. The TRS-80 community needs more new games!
Is the source code available? I am learning Z80 and would really like to understand how this works