|
Post by Malban on Mar 10, 2016 8:08:27 GMT -5
|
|
|
Post by mountaingoat on Mar 17, 2016 8:37:03 GMT -5
Very nice write-up.
Will play with the code you included.
|
|
|
Post by thomas on Mar 31, 2016 4:57:50 GMT -5
Just read your write-up, very informative. And at the perfect time for me:
I've just created a maze game of my own plus did experiments with the SHIFT reg on different hardware in the recent past: . the programming of the shift reg cycle takes 18, not 19, cycles. Meaning you can update the shift reg with a new value that is displayed every 18 cycles. Bits are shifted out every other cycle and the last one is displayed twice. if you reprogram too early it stalls - the last bit is shifted out indefinitely . when the bit is shifted out, there is still a delay based on the VIA in your Vectrex of 0-3 cycles until it is used for the beam . the 'scale' value is not only not perfectly linear but depends .a.tiny.bit. on what has been drawn previously. This (analog) behaviour is different from Vectrex to Vectrex capacitor set. An emulator .could. settle for one physical behavior. This does add up esp. in mazes or custom text/bitmap routines.
The cleansweep custom gfx routine is interesting, seems straightforward but they could have used a brn instead of 2 nops to save a cycle. And some of the delays I do not understand, seems like they were erring on the very conservative side.
?? Is this really the way Cleansweep organizes the draw : DB $76 ; Vertical position 1 DW horizontalLine1 ; definition of Shift-Values for horizontal maze line DB $5B ; Vertical position 2 DW horizontalLine2 ; definition of Shift-Values for horizontal maze line DB $41 ; Vertical position 3 DW horizontalLine3 ; definition of Shift-Values for horizontal maze line DB $27 ; Vertical position 4 DW horizontalLine4 ; definition of Shift-Values for horizontal maze line DB $D8 ; Vertical position 5 DW horizontalLine4 ; definition of Shift-Values for horizontal maze line DB $BE ; Vertical position 6 DW horizontalLine1 ; definition of Shift-Values for horizontal maze line DB $A4 ; Vertical position 7 DW horizontalLine4 ; Ram location because of "doors" DB $89 ; Vertical position 8 DW horizontalLine1 ; definition of Shift-Values for horizontal maze line DB $00 DW $0000 ; end Pointer (0000)
top to bottom, not trying to mix them up a bit ? This would explain the tendency for 'wobbling' on so many real Vectrex units…
|
|
|
Post by Malban on Mar 31, 2016 16:55:05 GMT -5
The code is ripped directly from cleansweep.
You can very prettily watch the display using vide (either enabling the arrows on vectors) or by multi stepping with the vector integrator position switched "on".
If you have more informatione on vectrex hardware and how to better emulate... that information is very welcome :-)! (if you can supply, I would appreciate example code (so I can alter and verify), screenshots etc... I have only two vectri at my disposal)
Your last test binary (disasm.bin) is now emulated quite exact in vide. (concerning my no buz system... at least)
Malban
PS. You said scale, but you ment speed or "strength" didn't you? The scale is usualy timer 1, while speed/strength is the integrator "sample/hold" value.
PPS. I think the vide archive contains my SWEEP.CNT file, so if you use dissi, you will see some of my comments...
|
|