Sunday, July 26, 2009
- Finished Sundance keypad control tests. Also added support for GRID button, SUNS buttons and FIRE buttons.
- Added Sundance 16-Level intensity support. Sundance wasn't displaying vector intensity correctly. This is fixed and Sundance displays intensity as bi-level games do (as least in mame). Thanks Zonn!
- Reworked returns from Bank-switched subroutines - wrote a routine that supports 4x subroutine nesting and can return either within the same bank or switch banks.
- Added vector frame around game selection screen for yoke adjustment.
- Added Gear 4 control for Speed Freak.
I also was able to break TASMs single .obj file into 4 odd/even byte dissected roms to test my 8k bank switched program in the 8k games. Before this I was just testing the new bank-switched program using 2 4k roms in Armor Attack.
In doing this I found a difference in the bank switching between the 8k pcbs and 16k pcbs. The 8k pcbs use banks 1 and 2 (as described in the Cinematronics Application Programming Manual). The 16k pcbs use banks 0 and 1 (and I assume 2 and 3 from the upper 8k). The bank to jump to is set with a setp(bank) statement right before the t4k command.
So the code will be slightly different between 2716 versions and the 2732 versions of Cinematronics programs. Luckily for me, it's just two changes in my macros.h file to generate code for each of them.
Wednesday, July 22, 2009
Mameworld Forum Link
While I can't confirm their accuracy, they both work pretty well and should allow me to at least test the test rom's sound triggers for these games in mame.
Now if I could just find samples for Speed Freak and War of the Worlds!
Monday, July 20, 2009
I originally was trying to get the entire test rom into 4k, so that it would take two 2716 /2532 / 2732s. However, In order hold the data required to test all the games this won't be possible. So I've added bank switching and have increased the maximum size of the program to 8k. Note: I will have a separate slimmed down 4k version that only tests the 4k games: Space War, Starhawk and Barrier.
This means I've outgrown some of the initial assumptions I had in writing routines. I've had to backtrack a bit to spread the program across the two banks and manage bank switched subroutines and data. Without a stack, return addresses from subroutines have to be maintained by the programmer. Add to that the return can be to the same bank or a different one and that the routines can be nested and I've got a bit of a mess to clean up.
Left to do:
- Adjust Ram test to work without JMI: so that it will work with the older games.
- Finish Sundance keypad control tests: Only game that one press changes multiple inputs
- Rework returns from Bank-switched subroutines: this is a pain, but has to be done
- Add vector frame around game selection screen for yoke adjustment.
- Tweak vector timing in ram test and text drawing to fix smearing: vector draw is being turned on before beam has reached it's intended destination.
- Add Gear 4 control for Speed Freak: it's an exception to the rule, on when nothing's pressed
- Expand timing routine for sound triggers: My current routine just plays each sound for a fixed length of time and then moves to the next sound. This works fine in Mame where samples are being played, but on the actual game hardware doesn't simulate the sound heard in the game well at all. This will be a two part timer: length of time sound played and length of time sound is off. Sounds will still be able to be locked with sound on.
- Finish tweaking and testing sound data where I'm able and cleanup silencing of sound boards.
I'll post pics / video at some point soon with more updates & notes on Cinematronics programming to come. The good part about all the work for the test rom is that many of these routines will be able to be used for future new games making me that much further along for those projects.