Monday, June 30, 2008

My CV....

I've been busy making an about me page which I've been meaning to do for years. The idea being that it'll eventually turn into some kind of life history I guess. Anyway, you can find the first version of it HERE, and although its just a list of things I've done, its a good start.

Sunday, June 29, 2008

TG16 Shadow of the Beast - ROM!!

I've managed to convert the old devkit Beast.BX file into a real BEAST.PCE file! The only reason I was able to do this easily was because years ago when I was doing SotB(Shadow of the Beast) I hated the offical debugger so much, I wrote my own! If you want to see what I was dealing with, drop down into a command prompt and type DEBUG. This is what the offical devkit was like - terrible! So I spent a couple of months after work hacking the debugger and working out how it talked to the ICE unit, then I wrote my own. The first thing I did of course was to upload the assembled .BX files, and to do that I had to reverse engineer the format of that as well as the symbol file.

Of course back then I was having so much fun doing this I stayed at the office and worked late into the night. It took a couple of weeks to get to a usable point, and around 3 months to actually get to a finished state, but it was a vast improvement. I remember being pissed off at Dave though as he refused to try and sell it back to NEC, even though they would have been sure to take it. It was party because I wanted something out of it, and becasue it was going to be more compilcated than just sell and forget, he couldn't be bothered.

However, it was good fun and taught me a lot, particually the expression evaluation stuff that Brian Watson wrote for me. I had a really simple one it, and it wasn't recursive. So he knocked a proper one up for me, and I've been using that method ever since.Its also funny to see the cheat mode is still in there, but unlike the final game, this one displays the Lemming's logo! No idea why that was removed, I was probably told to - but its pretty funny seeing it pop up. For those that don't know, on the title page of SotB, you can press Fire1,Fire2,Fire2,Fire1 and the number of lives go to 99. And your into cheat mode. Easy as that!

This demo is only the top level, and the first multi-directional level, theres no castle yet and all the graphics are Amiga ones with the exception of the trees (which do look a little pants). After seeing this Psygnosis weren't happy with the look of it at all and so drafted in Martyn Chudley (who went on to own Bizzar Creations) who drew all the cool backgrounds and sprites. He was actually busy on his own game at Psygnosis at the time Wiz 'n Liz on the Megadrive, which I almost ported to the SNES funnily enough.

I have to say this is interesting...but dull really. It's an interesting snapshot of development, but the game still sucks and its only a partial game with just 2 levels. But its funny seeing it never the less.

TG16 stuff...

Not been doing a lot past few days, but I'm now off on holiday for a week so Im going to push on with my TG16 assembler first. I did get a little shock though as one of the manuals I have must have been a pretty early one since it doesn't document CSH or CSL which are used to switch the PC Engine into high and low speed modes. Now, I knew about these commands since I have some old source, but the manual I was using didn't document them at all, and its not like there were pages missing as the page numbers count up fine! They just weren't there! However, my other (slightly grubbier) manual does have them, so I can find out the opcode and add them in.

It's probably going to take me a few days to get all this stuff in which is a pain, but then I should be good to go!

I also found a VERY old bit of shadow of the beast. I think this is pre-CDROM! In fact, I have a sneaking suspicion that its the version that was in the Games-X mag back in 1991 where I just had the beast man running around on the 1st level - before all the pretty graphics went in! I'll need to try and work out the format of the ROM dump as its a special outpu for the offical kit, but if memory serves its pretty simple. I'd love to see this again and get a bit of video of it for my DMA page.

I also found my SuperSystem2 card, and on the back It's been labeled No. 2. I wonder if we did get the second one ever made... or if it was the 2nd one given to developers or something - who knows. I do know we were one od the 1st to develop on using the new SuperCDROM, so it might well be the second card ever made - which is cool.

Tuesday, June 24, 2008

Damn those NEC people!!

I've been updating my assembler to do the extra TG16 opcodes I need only to discover that NEC in their infinite wisdom have changed every opcode! Every single one! Damn them!! So I now need to create another opcode table for the PC Engine.... Bugger. It also means it's going to take me a little while before I can get to actually work on the blood thing.

I found another old PC Engine manual though, and its the good one! It has all the hardware and CPU stuff which means I can at least start to read about things - even if i can't plunge on and program anything!

While I do want to play with a dual-playfield thing, I suspect I'll end up porting XeO3 to it coz...well... why not. The TG16 was a shooters dream machine and had some amazing shooters on it, so it will be good to actually write one on it. Shadow of the Beast let me code this little machine and I do love it... but I hated almost every moment as the game was totally crap. Oh well....

Saturday, June 21, 2008


I've been going through a whole load of old backup CD's I have, trying to have a little clear out, and I've finally found the old source to Ballistix! It looks pretty complete including editor and game code. However I'm not excited about that so much as the music player source I'd lost!

This was based on the HiredGuns octamed player (I think) and allows the full 6 channels to be used. It was attached to the timer IRQ which means I can probably plug it into virtually anything I do - particually since I also have the PC Engine music itself!

The music player was built ontop of my sound effects player which simulates the C64 ADSR stuff (since each channel had its own volume). There also appears to be a sample player (including a function called PlayAmigaSample) although I can't remember Ballistix playing samples at all... I'll need to hook it up again and have a listen...

It will also remind me how to arrange the ROM so that it'll actually load in an emultor - exciting stuff this!

XeO3: Update

With the final playtest demo done I can now look forward to other things, like a C64 version for a start! I would quite like to get the playtest demo running on that, although the lack of front end does make it a bit of a pain.

I've hooked up my C64 again and have the demo playing away on it, and it's looking pretty good I guess. We've gone for a gray level this time which makes the player ship stand out much better (as its still blue). It looks much smoother as the sprites and scrolling suddenly have an extra pixel to move with as it is no longer limited to MultiColoured pixels. This is where my pain of keeping hires coordinates comes ino its own, everything just works AND smooths out all on its own!

The panel raster split isn't quite right so I'll need to look at that, and I really want a better multiplexor sort. The one I have is okay, but I think a 1D-linked-list and an insertion sort would speed it up and make things a bit smoother.

I've also resurrected my character sprites on the Plus/4 which allows me to throw around huge blocks if I want, but I dont know if I have the memory to keep them in. I would like to keep the source active though so that even if I can't use them, when I release the source others can.

If I dont use character sprites then the redrawing of the whole screen becomes questionable, particually on the C64. I could spend a lot less time simply scrolling the screen over 8 frames then flipping to it. But this would require me to save+replace over a VBlank. Possibly, but tricky. (Or use more screens...).

With character sprite code back in I can also start thinking about putting it things like doors that open and closethat you have to go through adding another layer of complexity to the game which blood money had (although they were too quick I think).

I'm also going to be playing with some PCEngine stuff I just got so there's probably not going to be any immediate progression on the game; besides I want to let the demo get a good playing and get all the feedback in before we start on real levels so I have a little bit of time to play.

Thursday, June 19, 2008

XeO3: Demo V2.0

I'm currently finishing off the update to the demo and Luca and I are both pretty pleased with it. We feel its way too easy for us, but I suspect that probably means it'll make a good level 1 standard for everyone else.

So whats new? Well heres the list. You'll immediatly notice a couple of things missing, but if you read through the comments to last weeks postings you'll see where those are going. I've still not discounted a midway restart, but I've yet to be convinced.

  • Coins now drift with the scroll.

  • Coins now arc up slightly higher.

  • Baddies are easier overall.

  • Several fadeing bugs fixed.

  • Alien bullets now get rendered after player bullets so they MASK properly and dont disappear when a player fires through them.

  • Paths now continue to move when your dead.

  • All bullets now continue to move when your dead.

  • panel bars now dont clear on death but simply recharge.

  • screen keeps scrolling on death.

  • You now get a shield draining sound.

  • Small coins are now worth 1/2 coin.

  • Large coins are now worth 7 coins!

So there you go... thats pretty much the list. As I've said Luca and I find this pretty easy so its proof really that practice does help!

Wednesday, June 18, 2008

TG16 stuff....

Now that my TG16 (PC Engine) flash card has arrive, I've been trying to think of something interesting to do with it to get back into it. I was looking at an old Video of Shadow of the Beast I did years back and realised it could have been much, much....MUCH better....

Now if you watch this through, you'll see that when it gets to the platform section theres no dual playfield mode - pretty much because the TG16 doesnt have one! But I've figured out a way to get a simple playfield going,which would make it look astounding!

Using an old technique from the C64 and by what I've been doing with the Super CPU, I think you could add a proper playfield without losing sprites etc. That would be a pretty cool demo to start with!

When I was doing TG16 stuff, I just didnt use the CPU power properly; sure I know more now and was pretty much wallowing in CPU time last time, but I think I can now fully utilise the space CPU time. 7Mhz is a LOT of time to burn...

Monday, June 16, 2008

XeO3: changes.....

I've been playing with the speed of the ship and its really is just too fast if I double it. It makes it more of a dash/avoid style game which isn't what I want. The real problem I guess is that I can't just speed it up a little since a multi colour sprite must rest on 2 pixel boundarys.

Luca has just finished playing the sped up version and while he enjoyed it, he thought it was way too easy - as did I. All the paths have been built for a slow moving ship, and speeding it up pretty much spoils everything.

What we could do is add a powerup that speeds your ship up for 30 seconds or so, which means you get the benifit of it, but doesn't ruin the game

I'm still really surprised that everyone finds it too hard, as all the games people go on about; I'm stinking at! I think its just practice everyones all needing. Thing is, if its too easy then everyone will just finish it too quidckly and get no long term enjoyment from it.

Thats the thing about trying to balance the game with the feedback I get, everyone playing it wants to finish it and in some respect wants it as easy as possible so they can do it pretty quickly. But theres no point in that. You need a game thats challenging and does make you scream, but that you'll come back for more too. In this respect I think it has to be harder than everyone's wanting, but not so hard that theres no chance in reaching the end.

Blood Money on the C64 was hard, way too hard. While I did manage to pass each wave individually, I couldn't do a whole level. I think the trick here is to make sure I can pass at least level 1 and 2 (since I really am crap at these games), then make the later ones harder; perhaops getting someone much better to actually playtest it and make sure its possible.

So on Friday I'll release a new version, but the ship won't speed up, that'll come when we add power ups again. I know this won't be particually well recieved, particually since I dont intend to add restart points either but hay ho...

As to restart points.... The scripting makes this hard since you have to fastforward through it (much like the debug system does) and its pretty nasty to say the least. I also think the amount of shield you have means you're actually pretty well protected! You can get hit a LOT before your thrown back to the start! Many games need the restart because if you get hit by a single bullet your dead! We don't. Also since we let you keep most of your weapons, you have the chance to actually build up even more next time around so when you get to the place you died, you should have more shields and weapons this time around!

Still... thats the theory, so for these 2 things I'm at least partially sticking to my guns. I will allow a temporary speed boost, but not permanent. I just find games where you fly around at great speed too hard and frantic, and thats not what I'm trying to make.

Edit: At the end of the day, it has to be a game I enjoy making and playing, and I don't agree with the restart points as I believe you would HAVE to lose all your weapons and coins and I hate that! Mid way through a level with a pea shooter is nuts! You might have 10 lives but they'll all go when you restart with a crap weapon. If you start from the begining, then I feel you can keep most of the goodies you have as you've been punished enough.

Saturday, June 14, 2008

XeO3: Improvements

So here we go again....

  • I've made some of the harder baddies easier to kill

  • I've added the drift to the coin and made the arc slightly higher (although as Luca's aready pointed out, it still has to get off screen pretty quickly!)

  • I've added the scraping sound as you get hit.

  • In the final game, there will be a sheild recharge pickup, and it'll get recharged at the start of each level.

  • I'm still unconvinced about moving the ship faster....

  • I've made the harder baddies a static frame so you can tell they're hard to kill. This will chance in the final game to a different baddie graphic so each TYPE will have its own strengths.

We will release an update in a few days to see what you all think about the improvements, and all going well, we'll plow on with the actual game.

I also just spotted a worrying bug in visual SourceSafe. It would just refuse to check in a modified file for some reason! I'd check out a file, change it, and then check it back in; but the file wouldn't actually change! This seems to have affected 2 files. My turret source file, and the front end logo characterset. I've now managed to fix them both without losing anything, but thats a worrying turn of events!

XeO3: First bits of feedback.

The biggest agreed one was that it you need a sound when being hit, or when you hit a wall, the next is people think its just too hard. After that it gets a little more generic with no real consensis. Being thrown back to the start of the level seems to be an issue and there also appears to be the need to move a little quicker. So lets address some of these...

You now get a sound when being hit, or when hitting a wall. I have to use sound effects sparingly as the TED sound system is fragile, this means I cant go overboard on different sounds for various events..

I'll tweak the harder baddies and see if that helps

I'm not a big fan of restart points, and if you did I would have to punish you more for diying. Currently you dont lose all you weapons, I think if you restarted, you should. I don't really like that. I could just bring the player back on screen at the same point, but again, you'd have to lose all your weapons or it would just be too easy.

Speed... This is a tricky one. Because we're software sprites in MCM, I have to double the speed of the ship (not just move it a little), and that might mean you miss bullets. But we can certainly look at it - possibly as a power up.

Remember there are 2 coin sizes. Small ones fall from individual baddies, and larger ones from groups of baddies. This means shooting a whole wave will sometimes drop a large coin and you get more of the coin bar filled at once! Currently I think theres too many falling early on, but we'll see how that works out...

2 bullets at the start should be fine, particually as you can power up really quickly.

Folk are finding it tricky to pick up coins. This is a bit of a surprise, but I'll look to make the arc bigger to give you more time.

Also remember that in the final game theres lots of different baddie types, and these will dictate how hard it is to kill. This means it'll be easier to spot those harder aliens. But for now, I'll change the animations a little to make them more obvious.

The rasters are fine on the real machine... if it wobbles, its the emulator your running on! :)

Keep the feedback coming please, if you have nothing to say about it - then say that! We need to know that too! We'll do updates to the demo until its playing better, then we can progress to the real game again.

I'm also very interested in hearing from people that are playing with the scripting language and how your finding it.

Friday, June 13, 2008

XeO3: ALPHA!!!!

Well, its time!! You can find the link on the right, go get it, play it, think about it... then let us know what you think!

I've just recieved my PCEngine FLASH card! With this I can write code and download it to a real machine! Very cool! I'll need to update my assembler once more to allow for the extra custom operands, but thats fairly simple. I love this machine, its sooo quick compared to a C64, and its stacks of characters AND sprites! coool!!

Thursday, June 12, 2008

XeO3: Final - FINAL - cleanup!

Well theres always SOMETHING left to do isn't there!

I've added pause and quit keys (Shift-Lock and Escape respectivly).
I now clear the screen on quit.
I've now made the front end options work.
I added an explosion sound when the player dies.
I kill sound effects when you quit. (kind of)
I fixed a bug where when you quit with bullets flying, it wasn't being reset.

Thats about it.... A couple of folk invloved have recieved test versions and they seem to be more or less happy, and with these changes, so are we....pretty much :)

I plays reasonably well I think, but we'll see what everyone else thinks about it when they get a chance to play with it over the weekend.

XeO3: Final cleanup!

I was looking through the game and spotted a couple of things I want to try and fix tonight - pretty minor, but it would still be nice to fix them for the demo. Once I've done that, I'll get a package ready for Luca to post tomorrow night (whenever we're both home and ready).

However... I was thinking.... IF I really wanted to... I could probably speed the game up quite a bit. For example: The engine redraws the screen every frame - this is slow. It DOES mean I dont have to save+replace stuff, but it would be much quicker to slowly redraw a screen over several frames, THEN flip. I blit the screen each frame because I wanted to have large character sprites that cover large areas of the screen - but that would be too slow to replace. However, due to memory we've dropped that idea. (The source is still there so someone else can play with it!)

So... lets look at HOW you could speed it up.

If when drawing sprites I did collision of baddie sprites to bullets the same way as I do the player to the background, then I could remove the N*N loop I have which does bounding box checks. I could also draw a lot more bullets! (Dan did this in Armalyte, and I suspect its common practise with C64 shooters).

Next.. If I did a Save/Replace system for bullets and sprites I wouldn't have to redraw the screen. (this would save a large screen buffer anyway).

That way I only ever copy a couple of lines a frame rather than 21!! That would be a massive saving, possibly freeing up enough time to draw another couple of sprites! (which would make 12!) OR (more likely) allow drawing of more complex weapons!

Now... I could do this... But I think we have finally passed the point where major changes are allowed, otherwise we'd NEVER finish! If I ever do an XeO3-II, then I might alter some ideas.

Still while I'm talking about that.. After the Plus4 version, I'll finish the C64 one (possibly taking some of the above ideas on board), and then do a TG16 and PCEngine version, as I love BOTH those machines! Since they are both basically 6502, I dont expect them to take very long and I might be able to move to other platforms... like the Amiga/ST.

Still...its taken long enough to get here, so I'll worry about all this later!

Wednesday, June 11, 2008

XeO3: Almost there!!!!

I've ironed our the remaining issues, and Luca is reasonably pleased with the level layout. We've also tweaked a few graphical things and tweaked the BOSS's nose.

I wouldn't get too excited about killing the BOSS though... it'll just restart :)

So, all going well, and barring any major issues the demo + scripting test will be released on FRIDAY NIGHT! (Friday the 13th!)

PLEASE remember to give feed back on one of the many forums (C64, Plus4, spectrum etc..)

Tuesday, June 10, 2008

XeO3: An interesting side effect....

Now that its all working, it appears to be quite a bit harder.... Closer inspection shows that the changes to the bullet collision have actually made it tougher! This is because coins can now be hit! So its pretty tough to shoot a line of aliens if they all drop coins, and means you really need to shoot it close to you, and then quickly pick up the coin so you can shoot the next one in line!

This is pretty hard, particually if your being hammered from all sides by turrets! I could change it now, but I think I'll wait and see what the feed back is. Of course, the temptation of gamers it to make it reasonably easy so they can finish it, so all comments will have to be taken with a pinch of salt, but lets see what you all say.

XeO3: At LAST!!!

Well, its offical....I'm a prat. Let the word go forth.... I am a moron. Yes, I've fixed my bug, and wouldn't you know it... it was the change I made a few hours before when altering the collision flags. I was simply branching to the wrong location when I detected a NOSHOOT flag. What a prat.

Oh well... Debug code now removed and we're back on track! Now I just need to finish this level off, and build a scripting framework.... almost there!

*sigh* oh well at least its fixed, but I still feel like a twat.

Saturday, June 07, 2008

XeO3: I knew it!!!

Oh well... I knew it was going to smoothly... I've discovered a bug thats gonna delay things until I manage to find and fix it. Shooting at the boss you eventually stop firing for some reason. No idea why, but it looks like your bullet counter goes negative, and then is unable to fire any more. No idea why - theres only 2 places which reduce the counters, and I cant see how this is possible - fek.

XeO3: The finishing touches!!

I'm now putting the final touches to the demo! Yep, I'm almost there... I'm adding a simple BOSS to get the end of level some meaning, although while doing so it threw up a couple of bugs and issues.

First, I've changed how the NOSHOOT and NOCOLLISION flag works. NOSHOOT now simply means that while the bullet hits, it won't cause any damage, while NOCOLLISION now means it has no collision AT ALL! So neither Bullets or players will hit it. This makes a little more sense and allows for baddies to be shot at while coming on screen, but take no damage.

I've also changed the parent system, so that a sprite marked as a CHILD now uses the path/sprite than SPAWNED it as its parent. This feels more logical when building paths.

I've also fixed a bug where by if you kill a sprite that was PAUSED, the BOOM animation was over running.

So... there you go... Almost there! Just need to finish the level off, and then make up a batch file to allow you to build your own levels, an that'll be that! (I think...)

Monday, June 02, 2008

TG16 fun...

With XeO3 being easy to port to the C64, I started thinking about other 6502 platforms... SNES is one I'd like to lookat, particually as I have a couple of old DevKits AND a couple of magicoms. these were copy devices, but I used to use them for homebrew development as you could squirt code down to them from a PC/Amiga.

So, I started reading up on some old PC Engine stuff, and was trying to find something (outside an emulator) that would let me code for it again. I was hunting for something called TurboRAM which was a prototype device to let you download to the TG16, but I couldn't find anything - I guess its long gone now. But this would be cool, so I started hunting for info on the expansion bus to see whats invloved.

I actually found info on the Cartridge port, and its quite interesting... It's only address+data lines, it doens't appear to be encrypted at all!! This means it shouldn't be too hard to make a RAM card that you can download to! So thats another thing on my to-do list, see if i can hack together a RAM card for a PCEngine, then I could actually code for this great little machine again!

(I also have an old MegaDrive devkit! It should work, but i've haven't used it in over10 years now).