This is the Microvision Bowling Cart which was dumped in the last day or two by Sean R. by the carve the top off and take a picture with an electronic microscope method.
Unfortunately it didn't work properly on the emulator. A couple of easy fixes - it has the 'reversed output' like Vegas Slots, and there were a couple of error bits that meant it went haywire.
But it kept flickering - switching 45 degrees all the time. I thought it was a timing bug or possibly a polarity reversal issue. MESS was fine (albeit the data was bit reversed) and MESS doesn't do the polarity reversal, not that it actually matters, you can't have too much DC in an emulator.
It was actually my try-to-be-too-smart optimised LCD code, which tried to second guess the programmer as to whether they were writing vertically or horizontally or both to the LCD controller. It got it right, but this cartridge, technically does both, sort of. The top left most pixel should be set as well as the one below it, but because it does multiple writes to these lines, it got confused, and switched between the two all the time. So sorry, that was really dumb and I hope I haven't wasted too much of Sean's time.
So my plan X is to write a proper LCD rendering routine and use that for the PC based emulator and the row one for the Arduino (I don't think it could do a pixel based one and keep up). This isn't hard, my optimised version treats a row as a single entity with a single entity whereas in reality each pixel has its own latency. This will mean the bomber game which draws everything as columns won't work on the Arduino.
Once I've done that I will update everything, rebuild the Windows version and so on.
Then maybe this weekend I can see if I can build the hardware version.
Thursday, 23 January 2014
Wednesday, 22 January 2014
Space Invaders ... completed.
The game is basically finished, coming in at exactly 1,000 bytes, slightly less than half the ROM space of the TMS1100.......
I'll update all the code and stuff after I've tested it a bit more, but it seems to basically work fine.
I'll update all the code and stuff after I've tested it a bit more, but it seems to basically work fine.
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 !)
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 !)
Space Invaders, session 3
Tuesday, 21 January 2014
Space Invaders, Session 2
Little progress today - the base at the bottom can move and you can 'fire' a missile, though it doesn't actually go anywhere yet :)
Should do a bit more tomorrow.
L8R: Got it moving up the screen, and detecting the rows, now need to match the position to the row bits.
Should do a bit more tomorrow.
L8R: Got it moving up the screen, and detecting the rows, now need to match the position to the row bits.
Monday, 20 January 2014
Space Invaders, Session 1
This is the first time I've written cross-chapter code. A TMS1100 is a TMS1000 with the extra 1k ROM bodged on using a Chapter Buffer, Chapter Address and Chapter Subroutine Store, which means that the actual program counter (423) is built up of three numbers - Chapter Address (one bit), Page Address (4 bits) and Program Counter (6 bits), making 2k in total.
I thought this would be annoying to program, but actually it doesn't make much difference. You can't actually set the CB flag (that is copied to CA when you jump/call) , just toggle it, so that's one thing to keep track of but it isn't that much of a problem to do so.
Note there is very little animation in this game, just moving blocks. But that applies to virtually all Microvision games.
Sunday, 19 January 2014
The next game will be ... Space Invaders
Okay, so it's not horribly original. But it's a reasonable second game after the trial bomber game. This shows a mock up.
I decided against shields, because it would reduce the invaders space (err...) - there probably won't be any saucer across the top either.
There's a limit to what you can draw in a 16x16 grid !
I've also updated the bomber.asm and tms1100 assembler, so it can use include files - I did it just by concatenating the files together before but that meant the line numbers on the error messages were wrong.
I decided against shields, because it would reduce the invaders space (err...) - there probably won't be any saucer across the top either.
There's a limit to what you can draw in a 16x16 grid !
I've also updated the bomber.asm and tms1100 assembler, so it can use include files - I did it just by concatenating the files together before but that meant the line numbers on the error messages were wrong.
Subscribe to:
Posts (Atom)