New game in progress: Q*Bert 2009

Discussion, Reviews & High-scores

Moderator: Moderators

brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

New game in progress: Q*Bert 2009

Post by brighty »

Hi all,

I've been working on a Vic20 version of Q*Bert for the past couple of months. I wanted to get a reasonable way into the code before I announced the project here and I feel I've now got something to show.

For those that are interested in the motivation and process behind making a game, here is an abbreviated version of mine.

WHY?
Q*Bert is one of my favourite games from the 80's arcades. I know there is already a Q*Bert for the VIC, but it was a bit deficient technically (IMHO). I wanted smooth animation, full implementation of all of the characters found in the original, increasing difficulty levels and a few other nice-to-haves.

HOW?
I'll answer this in the context of development. I am using an Asus EEE netbook running Xandros Linux for my main dev environment, with DASM and VICE 1.22. I regularly copy the binary compile onto an SD card and take it over to my real VIC. The real VIC is a PAL VIC, with 8K memory expansion, joystick, Commodore 1084S monitor and a 1541-III MMC/SD-card IEC-Drive (http://jderogee.tripod.com/project1541.htm). The game is 100% ML.

WHAT?
...is done so far:
Software sprite engine...
.. for multicolour mode, is written and working. I can have up to 5 sprites (16x16) fully floated and double buffered on the screen at one time. At this time, I need to optimise my code somewhat though, as there's a noticable slowdown when 5 concurrent sprites are in use. The engine allows for transparency and prioritisation of sprite plotting (stacking). The sprite engine was pure hard graft to write, debug, correct, repeat, ad-inifinitum. The really fun part was creating a sprite scripting language to allow pre-scripted movements to occur on each sprite, with iteration and conditionals (albeit rudimentary ones). This language and the sprite routines I have kept as portable as possible and I intend to use them in some future games I have in mind.

Some graphics...
.. although lots more to go. This is where I am really weak. I have no artistic talent at all and find it a struggle to make coherent shapes with the non-square pixels, restricted resolution and limited colour palette.

Still to be done...
.. LOTS! :lol: Well, a fair amount. In no particular order: Script triggered IRQ driven sound effects, player controls, collision management, save/load hi score table to disk, attract mode (as per original arcade version), and a lot of game logic.

WHO?
..am I? An original VIC owner from the early 80's. I have been a programmer for 20+ years, but not games, mainly ERP applications on minicomputers using high level compiled languages. I now work as a Network Admin and find life a lot less stressful, but I miss programming. Hence revisiting my 80's computer.

WHEN?
..will this be finished? Pfft. 20 years I've been programming and I don't think I've ever given a straight answer to that question! :lol: I am currently coding this game on my daily 2 hours of commute to and from work whilst sitting on the train and, when family pressures allow, at home at the weekend. Life can, and often does, get in the way of fun, so I make variable progress. The best I can do is to make regular posts on my progress and let you track it from there.

FINALLY
.. it's a bit of a long post, eh?
Here are some links for you to have a look/play with.

The game as it currently stands is here
8K or 16K expansion required. Some keys that work: F1 change pyramid colour, F3 change tile colour, CTRL cold start VIC.

Some write up on my sprite scripting language is here

If people are interested, I'll post a link to the full source code. It's a work in progress and needs quite a bit of tidying up, so please don't judge me :wink:

Oh, also if some kind soul could try this PRG on an NTSC VIC and let me know if there are any tearing or flicker issues, or centering of the screen is out, I'd be very grateful.
User avatar
Pedro Lambrini
Vic 20 Scientist
Posts: 1132
Joined: Mon Dec 01, 2008 11:36 am

Post by Pedro Lambrini »

Looking really solid. No flicker and quite impressive speed in the demo. I look forward to seeing this develop into a playable game. The old Q-bert on the Vic is shit TBH and it would be really nice to see a fully fledged version of the arcade classic. Good work so far. :)
"...That of the Eastern tribe being like a multitude of colours as if a rainbow had settled upon its brow..." Daniels 1:3
rhurst
Omega Star Commander
Posts: 1371
Joined: Thu Jan 31, 2008 2:12 pm
Website: https://robert.hurst-ri.us
Location: Providence, RI
Occupation: Tech & Innovation

Post by rhurst »

Runs great under VICE... I'll drop a copy on my NTSC VIC and try it there, too.

Judging from your scripting language, you have taken an interesting approach in this implementation... and looking at these early results, looks like your at a point where it can be completed to your stated objectives and requirements. Continue to take your time to do it right and post your results -- this is a great a place to share. 8)
Any technology distinguishable from magic is insufficiently advanced.
https://robert.hurst-ri.us/rob/retrocomputing
brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

Post by brighty »

Thanks for the replies and encouragement, it's great to get some feedback.

I have to say that it's been hard to resist the temptation to take a peek at Robert's SSS API. However, I was already a good way to completing the sprite handling code within Q*Bert and wanted to run with what I'd got, especially since I am using multicolour mode. When I'm done, I'll be downloading his code and documentation and poring over it to see how we differ in approach. From his output so far, I am positive he has a more structured and organised approach to his code and design than I do :)

I'm going to put the IRQ sound stuff in place today and see if I can get that going. I'll post later with a new binary if things go well.
User avatar
orion70
VICtalian
Posts: 4341
Joined: Thu Feb 02, 2006 4:45 am
Location: Piacenza, Italy
Occupation: Biologist

Post by orion70 »

I've been playing Frogger for ages on MAME before we finally had the wonderful Frogger 07 on the VIC... and now, history repeats with Q*Bert! Excellent work until now brighty, keep on programming on the train! :D
User avatar
Jeff-20
Denial Founder
Posts: 5759
Joined: Wed Dec 31, 1969 6:00 pm

Post by Jeff-20 »

Looks amazing!
High Scores, Links, and Jeff's Basic Games page.
brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

Post by brighty »

Positive progress today. I have coded in the interrupt serviced sound routines and have them working now. Sound effects or tracks can be requested ad-hoc or scripted into the sprite movement language.

I've added some simple sound effects for Q*Bert jumping and for the balls dropping onto tiles. They are extremely simple linear increases in frequency, as I don't have any experience with sound effects, but I'm planning on having some fun learning about them :)

The interrupt routine is called 120 times per second (approx), and the sound scripts consist of simple frequency/delay pairs at the moment. I plan to add commands for terminating all other sounds scripts, linking sound scripts, simple recursion and, of course, a mute button should it all get too much!

I've uploaded an updated binary here
brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

Post by brighty »

orion70 wrote:I've been playing Frogger for ages on MAME before we finally had the wonderful Frogger 07 on the VIC... and now, history repeats with Q*Bert! Excellent work until now brighty, keep on programming on the train! :D
I hadn't seen Victragic's Frogger 07 until I read your post above. I've just spent a blissfully happy hour playing it on my VIC.

What an excellent conversion. The attention to detail is fantastic. I used to play this machine back in the 80's too. This version is now on my top 3 favourites list for VIC games. Truly inspiring!
Legacy
Vic 20 Enthusiast
Posts: 154
Joined: Wed Dec 31, 2008 4:01 pm

Post by Legacy »

I was thinking about getting the EEE myself, looks like a nice little machine. Q-Bert is a classic and that sample you have is pretty sweet! Hope to see a full version. I tried vic-bert and wasnt too impressed (sorry!) Your version looks very promising!
The only way to program better is to find a better programmer. - Legacy 2009
User avatar
Mayhem
High Bidder
Posts: 3027
Joined: Mon May 24, 2004 7:03 am
Website: http://www.mayhem64.co.uk
Location: London

Post by Mayhem »

Smooth, solid graphics at least; compared to the official version by PB, this is miles ahead already in looks.

Noticed during the demo that the score only displays 6 digits; you go past a million and the end digit is lost ;)
Lie with passion and be forever damned...
User avatar
Ivanhoe76
Vic 20 Devotee
Posts: 200
Joined: Fri Sep 28, 2007 11:17 am
Location: Italy

Post by Ivanhoe76 »

Great work brighty go on this way... what's out there is already extremely good... if this is the beginning i just can imagine what it could become... ehi guys, having a look at latest releases and projects nobody can say that vic cannot handle sprites, no more!!
No one should tolerate death and violence because tolerance will generate habit.
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Yes, Parker Brother's official Q*Bert on the VIC-20 is rather poor. There is a game for the unexpanded machine called Max that is a bit better, but lacks colours. My 1K entry VIQ*Bert in the 2002 MiniGame compo was a simplistic take on making a Q*Bert game without the colour clashes. I'm sure your game will look much nicer and more polished, even if it won't fit into 1024 bytes of course. ;-)
Anders Carlsson

Image Image Image Image Image
brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

Post by brighty »

Mayhem wrote:Noticed during the demo that the score only displays 6 digits; you go past a million and the end digit is lost ;)
That's true :) The score is modelled on the original too. It is zero suppressed on the left, it rolls over to zero at 1,000,000 and there's currently a small issue with the display when it does so (doesn't clear the old digits on the right of the zero suppressed score). I can add another 2 digits quite easily, but when tile values are 25 points each and bonuses wont often exceed 5,000 points per round, you'd have to play at least 175 rounds to see it! I don't imagine the game will prove to be that addictive! :lol:
Ivanhoe76 wrote:ehi guys, having a look at latest releases and projects nobody can say that vic cannot handle sprites, no more!!
I have to say that I've been inspired and motivated by the progress and excellent quality of rhurst's work on his projects. It's kept me working on my own implementation even when it felt like I was making little progress. Hopefully other programmers will utilise his API or maybe even my code and create more VIC games for us to enjoy.

For my part, in the future I'd like to tackle an interpretation of Bomb Jack. Bubble Bobble would have been a great project too, but I can't get enough active sprites on the screen for that game, it's insane when you really start playing it! Ultimately, I also want to revisit my attempts to bring Atic Atac to the VIC. Apart from the small screen real estate and having less RAM than the speccy, I think some kind of version is possible. Well, they're all for later anyway.
carlsson wrote:Yes, Parker Brother's official Q*Bert on the VIC-20 is rather poor. There is a game for the unexpanded machine called Max that is a bit better, but lacks colours. My 1K entry VIQ*Bert in the 2002 MiniGame compo was a simplistic take on making a Q*Bert game without the colour clashes. I'm sure your game will look much nicer and more polished, even if it won't fit into 1024 bytes of course.
1K? :shock: I think it takes an impressively organised mind to code something like that in so little space. That's something I don't possess and admire people who do (my source code will tell you the story of my disorganised mind :wink: )

Thanks again for all the positive comments, they make a huge difference! Constructive criticism and suggestions would be great too, as I am becoming less objective by the day.
brighty
Vic 20 Amateur
Posts: 45
Joined: Wed Jul 02, 2008 2:14 am

Post by brighty »

Progress report for today:

Not much visually has changed, as I've been concentrating on game logic mainly. Had a cool idea on how to handle the disks and have wired in reference indexes for where the characters are within the playfield.

Visually, just to keep myself motivated after all that dry coding, I've added a little deform sequence as the balls bounce. It's not much, but it mimics the arcade version somewhat.

There are also two sets of numbers displayed at the top right of the screen, these are just for my debugging and represent the current row Q*Bert is on and the cell index he is standing on in the pyramid.

Updated binary is here
Made an addition to my sprite scripting language and updated that document
Hopefully, more tomorrow.
User avatar
orion70
VICtalian
Posts: 4341
Joined: Thu Feb 02, 2006 4:45 am
Location: Piacenza, Italy
Occupation: Biologist

Post by orion70 »

brighty wrote:Visually, just to keep myself motivated after all that dry coding, I've added a little deform sequence as the balls bounce. It's not much, but it mimics the arcade version somewhat.
:shock: Really impressive! Ivanhoe is right: with these "sprites" made possible by rhurst's API, a new era of VIC games is disclosing for us! :D

As a sidenote, just to pretend too much: the distortion of the ball would be better if symmetrical, i.e., the same at top and bottom (now it's deformed only at the bottom).
Post Reply