Wednesday 22 January 2014

Space Invaders Session 4

It's now basically playable. The screen shows a game in progress.

You can shoot the invaders - they shoot back.

There's no end of level, or invaders landing test yet, and if you are hit the game just freezes.

But that's for another session, tidying up, displaying the score and lives, and so on.

Current code size is about 900 bytes of a 2k ROM, and just over 1000 lines of TMS1x00 assembler in four files. The current version (zipped) is downloadable from the links on the right, obviously it isn't finished yet.

I haven't tried it on the MESS emulator yet, I did try Bomber and that works fine. It should actually work better because MESS emulates the pixel latency properly, mine's a short cut.

In other, err.... news, Sean has decapped a BlockBuster and examined the PLA, confirming visually what we thought was the case anyway, that the PLA inverts the output on Vegas Slots (or to be more precise, every other game so far inverts the outputs !)

10 comments:

  1. I decapped the TMS1100 from a Bowling cart and dumped the ROM. When I ran it in the emulator the game start prompt was scrambled. Checked the output PLA and it is the same as Vegas Slots! I patched the emulator and that fixed the prompt, but when you start a game, the graphics switch from normal to mirrored 45 degrees many times per second. You can bowl, but it seems like you always get strikes and the scores are weird. I've double-checked the ROM dump and it looks good, but there could be an errant bit. There are 3-4 obscured bits. I'll try to clean those off and verify them. Worst case, I can try all 8/16 variations.
    http://www.seanriddle.com/bowling_2000.jpg
    www.seanriddle.com/bowling.bin

    ReplyDelete
  2. I'll have a look at it on my emulator later on sometime. Can you let me know the locations of the errant bits ? I can check it for coherency, so to speak.

    ReplyDelete
  3. I found a couple of bad bits and updated bowling.bin. The game now plays fine except for the flickering, and for certain pin arrangements, it stops flickering. There's only one bit that I'm not 100% sure of - there was some metal damage right at the end of a bit, so there's a slight chance the bit next to it should be a 1 instead of a 0. I'll try toggling it and see what happens. I'll have to reorganize the raw dump file with the bit as a 0 and again as a 1 and diff the results to tell you which bit in the bin file it corresponds to.

    ReplyDelete
  4. I did run it, the display looks like for some reason it is getting out of sync, though the 45 degree mirroring suggests a code error rather than an emulation error perhaps. It may be also that we are wrong about the 0488 Controller - the data sheet isn't the most informative in the world and the tech info document Kevtris did was derived from what the code is doing.

    ReplyDelete
  5. Tried it on MESS and it doesn't flicker the same way, obviously everything is back to front but it looks right.

    ReplyDelete
  6. No, its me - your image is correct. It's the LCD optimisation - again :)

    ReplyDelete
  7. Teach me to write smart alec code. Bowling now seems to work perfectly - the top row does flicker because of the LCD optimisation thing, but it doesn't switch.

    ReplyDelete
  8. Cool! Here's Pinball's output PLA- 0-15 instead of just powers of 2. www.seanriddle.com/pinballopla.jpg

    ReplyDelete
  9. Probably the same result though, encodes then decodes by the looks of it

    ReplyDelete
  10. Paul- yep, Pinball plays fine in your emulator. One thing - it needs an overlay. There are "bumpers" that the ball bounces off of that are painted onto the clear plastic covering the LCD. Without them, the game is a bit harder! www.seanriddle.com/pinball.bin

    ReplyDelete