Skip to main content

Posts

Showing posts with the label machine code

Homebrew game - the worst bug ever

Exhibit A. (6502 assembly code) Have you seen it yet?  This took me two sessions to find, God knows how many hours.  The frustrating problem with this bug is that it caused memory to be corrupted elsewhere, memory that happened to be a part of the program. So the symptoms made no sense.  The game would crash after losing the first life, during setup for the next life. Once I'd found the place where the crash was happening, it was a routine that had already worked properly once. What was going wrong when it ran the second time? After pausing the emulator just before the crash and opening the monitor to examine the memory, I could see that my code at that particular spot was now corrupt. But that corruption could have happened at any time after initialising the game. No clue as to the culprit.  I eventually started returning from the game at various points and using the monitor to check whether the corruption had happened yet. Eventually a pattern in the corruption its...

Homebrew game for C64 - part something.

P rogress has been slow, I've been caught up in ironing out a few problems. Debugging those was tiresome, which meant that I found it easy to do other things instead. But now we have smooth scrolling background, music, enemies that scroll in from the left at an angle (hopefully soon multiple enemies / collectibles) multiplexing sprites (the sheep are each made of two sprites, a multicolour and a hi-res outline overlaid. The clouds are also sprites).

Another silly 'walk in the park' tune, rendered on a C64

I 'm finding it much easier to write silly tunes for my game than I am to write an actual game for my game. ( see the last post to see how far that's got and why it ground to a halt.) But I like composing and I'm getting my coding kicks from writing the assembly code to play the music  and developing my own app to convert the notation (via musicXML) into the data for my C64 music routine. It's doing repeats now, as you can see. The music you hear in this video is being played by a genuine breadbin C64. Thanks SID.  

Homebrew game for C64 - part 5: C64 / 6502 IDE for Mac

S o far I've not written very much about the actual gameplay. That's mostly because I had done a bit of that before I started writing this blog. I will write some of that up 'retro'spectively. (geddit?) But I've been choosing to do other things such as the music and whilst doing that I got hung up on writing a system for converting music notation to assembly . I've been muddling by with a miscellany of tools (TMPx, an online sprite editor, XCode etc). This has been working pretty efficiently, with a few frustrations. So today I decided to begin work on an IDE for Mac, which AFAIK doesn't exist. Not bad for a day's work.  The syntax colouring alone makes the assembly so much easier to read. The line numbering probably took more time than the rest put together. You never know what's going to go smoothly and what you'll be stuck on for hours. But is this just displacement activity?? Am I avoiding getting on with the gameplay because I'm...

Homebrew game for C64 - part 4: does it run on a real machine?

This has been an amazing journey so far. I've worked entirely on my Mac and the Vice emulator while dusting off a real breadbin 64 and gathering the necessary adaptors and other hardware. Isn't this the cutest thing??! It's a SD2IEC from The Future Was 8-bit . Thank you to them for everything they do. I've got a version that should work with C64, Vic20, Plus4 and more. I didn't go for the preloaded card option, but it was very easy to grab a card, format it and load it with stuff. This was a very big moment. It's been weeks since I started this project, and for the first time here it is running on original hardware. The sheep look fantastic to me, cheap monitor aside (the characters are straight from my cartoon, Yvonne the Sheep ). It's very early days as far as the gameplay goes, I've mostly been working on the tune recently and have built a system that allows me to pretty much import from sheet music . The music played, and it sounds bea...

Homebrew game for C64 - part 3: generating assembly straight from sheet music

T his post is going to combine musical notation, music XML, cocoa programming (objective-C for MacOS) and retro game programming (specifically the music) in assembly for C64. That might qualify this as an extremely niche post, so if you're reading because you're interested in all or some of those things, or if there's some other reason why you'd like to convert sheet music to another format, do let me know if the comments so that I know I'm not entirely alone! In the last couple of posts in this series I wrote about how I was tinkering around with a little tune for a game I'm writing for C64. Writing out the notation is something I'm very comfortable with. I eventually arrived at a great and efficient way to store and play the music within my game. This involved using a kind of 'bytecode', combining instructions and data. (A development of code that came with Derek Morris' book). That looks like this: That looks pretty laborious to wri...

Homebrew game for C64 - part 2: more SID tune fun

The development of the music for this game has gone so well - way better than the development of the gameplay itself, which I'm having serious doubts about! Writing a silly tune was the easiest part. I've now improved that - it has a 'chorus' which is deliberately reminiscent of 'English Country Garden'. The main part of the tune is meant to accompany sheep trotting / blundering around a field. It even has a fourth part now, although I can only use three because the C64's sound chip - SID - has three tone voices. And here's how it sounds using the Vice C64 emulator: Disclaimer: Tonight I've been messing around with voices and ASDR envelopes, and haven't yet found settings that I really like. The bass in particular is raspy here, I want a smooth sound, but when I use the triangle waveform it sounds very quiet even with the highest sustain volume. In the first part of this little diary , I mentioned that I started to use Derek M...

Homebrew game for C64 - part 1: SID tune

It's funny how interests from your teens remain with you, how easy it is to pick them up again and how comfortable they feel. I'll probably write more about the revival of this hobby and my collection of 8-bit computers. Let's just say for now that I've begun a C64 puzzle game based on my character Yvonne the Sheep and her friends - and enemies. Writing for 6502 (or 6510 in this case, which makes no difference as far as the assembly language is concerned) is like putting on an old familiar comfortable jumper. I wasn't particularly keen on doing music, I did think about just forgetting it and just going with sound effects. But a silly tune came into my head that seemed suitable for sheep pootling around a field. I'm not a composer of any great experience but I am at home with sheet music. Notating it (in 3 voices and possibly a fourth later) was the easiest way for me to get the tune out of my head and onto 'paper'. Before I knew it I was rea...