On holiday
Till then, have fun! :)
Labels: WIP
vectrex.bat
script, you'll have to write your own script to run the java command line (if you write one, I'd be very grateful if you could send me a copy, so that I can include it in the next distrib)"vectrex.bat"
to make the JAVADIR
variable refer to the good path."vectrex.properties"
to set the various ROM paths, and also the keymapping (the file is self-commented)"vectrex.bat"
Labels: release
Without persistence | With persistence |
/**
* According to the 6809 docs, it seems that the CWAI mask should
* be applied to the CC register before saving it onto the stack;
* but for some reason it prevents Bedlam from working properly
* (the only game around that makes use the CWAI instruction).
* unless it becomes a problem with another game, it is likely
* to stay this way until I've got the time to check it out!
*
* BEDLAM problem (when CWAI is implemented properly) :
*
* the main game loop at $00FD starts with "CWAI #$EF" that in
* fact waits for the refresh timeout to occur on T2. Before the
* program is resumed at $00FF, the IRQ routine at $09B9 is
* called. This routine is the rendering code, as it seems to
* draw everything. When this routine is done, it ends with an
* RTI (at $0C1D) that will return the control to the main loop,
* just after the CWAI. The problem is that when the main loop
* gains control, a T2 timeout already occured, and the next IRQ
* is pending (and handled since CC now has the I bit reset).
* Thus the main loop code is NEVER executed because the CPU is
* constantly executing the IRQ routine!
*
* Maybe the problem is not in the CPU emul code, but in the VIA
* T2 handling and IRQ handling instead...
*
* TODO - When things have settled down, investigate for this bug
*/
"LDD <VIA_port_b"
at $1D1F
returned <port_b
in both registers A and B, instead of <port_b
in register A and <port_a
in register B. /**
* We fill with $01 to bypass a bug in MineStorm (invalid
* reference to the ROM area, when a fireball mine is hit by
* a bullet while it is not yet moving). This could be fixed
* around here in the ROM :
*
* launch_fireball:
* EC17 [86.04.........] LDA #4
* EC19 [A7.41.........] STA 1,U
* EC1B [0A.EA.........] DEC <$EA ; $C8EA
* EC1D [7E.EB.53......] JMP check_next_bullet ; $EB53
*
* Somewhere in this routine there should have been :
* LDA #8 ; mark fireball as active
* STA ,U ; store mine state (if it wasn't moving, state was $10)
*
* Actually, when a stationnary fire mine is hit, the program ends
* up drawing a VL located at $3408 (because it assumes that an
* object that's not moving is either a dumb / fire / magnet /
* magnet+fire mine, whereas here it's a fireball!
*
* So to fix this we just fill the ROM with ones so that it
* becomes a big empty vector list.
*
*/
Labels: WIP