I really had an itch to play Bouncy Ball, the Color Computer game I wrote back in 2016. I also needed to learn SpriteKit for iOS and macOS. So I put the two needs together and created Bouncy Ball NextGen for iPad, iPhone and Mac. Everything from the original is intact, only getting an update to the UI, level flow, and sounds.
When playing it on the Coco, I always thought the game worked really well using a joystick. Now on the iPad, touching the left and right side of the screen to make it scroll is a perfect replacement. It just feels right, especially with the buttery smooth scrolling.
I wanted to keep you in the game longer, and not break the action. So progression from level to level, and death no longer requires user input, and just jumps right back into the game.
CpuEmulator is a CPU emulator project that aims to emulate a CPU (the 6809 to start with), it’s registers, and system memory. It will allow you to monitor registers, flags and memory as you step through code. Having done SharpiEmu for the Sharp PC–1360 Pocket Computer, the concept seems pretty simple. The 6809 has a number of addressing modes, and different opcodes for the same mnemonic. So I’m expecting it to be somewhat more of a challenge.
Initial version will emulate the CPU, memory, and text video mode.
Emulate 6809 instructions
Emulate 32×16 & 80×24 text modes
Emulate the Coco3’s MMU
4K all the way up to 512KB memory options
Debugger that steps through code, shows current state of registers, selected memory block, and source code from a listing file.
Break points. They are remembered between runs.
Memory watcher. When memory at a certain addresses are modified, a breakpoint is triggered so you can see what modified it.
Bouncy Ball 2 Progress Report 1. First things first. We need to get the Coco 3 into it’s high resolution graphics mode, then display a little something. To start out small, I decided to create a program that sets the video mode, uses the MMU to map in the video memory, then clears the screen. That part was easy, although understanding the MMU was a little whacky.
I’m happy to announce that Bouncy Ball 2 development has started! Design is underway, and the sound system already sounds awesome. We have been able to make the Orchestra 90 sound mad. It’s using full stereo sound, mixing 4 channels, and uses hardly any CPU. We have a lot to learn about the Coco 3. Join us every week or two on the BB2 development blog to watch our progress. We are Lee, Simon, and Paul.
Radio Shack Catalog Number 26–3143. The Orchestra–90 CC is a stereo 8-bit audio player for the Color Computer. It works by mapping two addresses in the Coco’s address space to two 8-bit DACs. $FF7A is for left, and $FF7B is for the right. This is the first time I have been able to use this cart, never mind program it! So far, it’s pretty easy to program.
Bouncy Ball version 1.0 has been released, and in time for the 2016 25th Cocofest. I was working on a timer bug, and RGB mapping, while Simon was working on the end game sequence. I owe him a case of beer for his efforts, staying up till 2am his time, on a work day! I am so looking forward to watching people play on my Coco 3.
Let’s make some noise for Bouncy Ball Beta 3! I wanted to share a video showcasing a sneak peek of the levels you will be pulling your hair out playing. That is assuming you still have any! This is the last video of Bouncy Ball before the 2016 Cocofest.
There was an interesting thread on Facebook this week that was talking about optimization. They took an imaginary sprite routine and optimized the crap out of it. In this article I’m going walk through the various stages of optimization and provide my own analysis of why the changes were made, and why (or if) the optimization was any good.
I’m going to assume you know how, or are familiar with some arcane programming language, and are either somewhat familiar with assembly or enjoy punishing your brain.
You might be surprised with the results of version 5 and 5p. Sometimes less instructions doesn’t always mean faster.
Bouncy Ball Beta 1 is here. See the downloads. This has the lightening fast rendering routine that Simon and myself optimized. Originally a 7 fps C routine to a 50 fps inline assembly routine. I am now running at the Coco’s stock speed of (just under) 1MHz instead of using the 2X speed up on the Coco 3. This also means Bouncy Ball should run on a Coco 2, but I have not tested it yet. The frame rate is buttery smooth but not vsync’ed yet. Some sounds have been added to the game, but in game ball bounce sound is not there yet. And best of all you can now use the keyboard to play!
In this article I talk about optimizing the level rendering routine for my game Bouncy Ball for the Color Computer. With the help of the mad man Simon Jonassen, I was able to take the render routine from 7 fps to 50 fps! I was quite surprised at the results. I made a video at the end of this article, and explain things in detail here. I also list a couple resources you might want to have in your back pocket.
I started working on converting my level renderer for Bouncy Ball to assembly. Check out the video below. The C is on the left, assembly on the right. The speed difference is about double the frame rate. Although, in the video I forgot that the C version is double buffering, and the assembly isn’t. Assembly also isn’t printing text. So I fixed both versions behind the scenes.
Awesome progress over this new years weekend. I started with a 4 page TODO list, and I have all but the end of game sequence done. I still have levels to build, joystick support, and then in-game sound and (maybe) music to implement. Sound will be via Simon’s irq driven routine. I even had some time to start work on Bouncy Ball’s official web page, and some package art. Now though, I think it’s time to take a short breather and maybe type in another BASIC program. I’m thinking Connect 4. I remember having that one typed in and added some Coco 3 hi-res graphics and sound to it.
You can now download a playable demo. I fixed the joystick button read routines. Use button 1 on either joystick to move forward, button 2 to move backwards. I don’t map RGB colors yet, so your colors will be different on an RGB monitor. See the README.txt in the zip file.