| |
blacky
Registered: Sep 2007 Posts: 41 |
dongle emulation in VICE
Hiya,
Recently progress on modularizing the ports hardware emulation in VICE has got to the point where we can start emulating tape port, userport and joy port dongles.
This would allow original dongle protected versions of apps/games to run without any change.
I would like to request information on any kind of dongle, specifically how they work (schematic or respones from the device would be nice), so we can add emulation for those dongles.
The tape-sense dongle (as used by access games) is already in the current trunk.
Signed, Marco van den Heuvel. |
|
| |
Six
Registered: Apr 2002 Posts: 293 |
DTL-Basic dongle? Details here: http://sid.fi/~tnt/dtl/ curteousy of TNT. |
| |
AlexC
Registered: Jan 2008 Posts: 299 |
Does it mean The Final Chesscard will be emulated ;) as it is considered probably the most advanced dongle protection on c64 ever made.
If you have implemented the tape port based dongle emulation you are basically left with emulation of dongles for joystick port. The idea is basically the same, the port is just different. The one software that used it and it comes to my mind immediately is The Compression Kit (if I get an original copy finally I will be able to tell more about it).
The rest is probably case by case analysis AFAIK. The DTL Jetpack could be considred advanced comapring to above cases. Here is interesting thread about it: DTL Jetpack BASIC
Another "dongle" type is emulated already: Calc Result from handing since to run it (early version) you need both cartridge and a floppy disk.
If you consider Mikro Assembler as a dongle (since there is no need to map the software into IO space otherwise than a copy protection scheme) it is another one working already under Vice.
Last but not least: this is awesome idea and thank you for your work blacky :) |
| |
blacky
Registered: Sep 2007 Posts: 41 |
Quote: DTL-Basic dongle? Details here: http://sid.fi/~tnt/dtl/ curteousy of TNT.
Thanks, I'll be looking into that one.
I'm also looking into the paperclip 64 joyport dongle.
I'll post here any results on my attempts. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
Quote: Does it mean The Final Chesscard will be emulated ;) as it is considered probably the most advanced dongle protection on c64 ever made.
If you have implemented the tape port based dongle emulation you are basically left with emulation of dongles for joystick port. The idea is basically the same, the port is just different. The one software that used it and it comes to my mind immediately is The Compression Kit (if I get an original copy finally I will be able to tell more about it).
The rest is probably case by case analysis AFAIK. The DTL Jetpack could be considred advanced comapring to above cases. Here is interesting thread about it: DTL Jetpack BASIC
Another "dongle" type is emulated already: Calc Result from handing since to run it (early version) you need both cartridge and a floppy disk.
If you consider Mikro Assembler as a dongle (since there is no need to map the software into IO space otherwise than a copy protection scheme) it is another one working already under Vice.
Last but not least: this is awesome idea and thank you for your work blacky :)
If there is any documentation about how the final chesscard works in detail I would be more than willing to add emulation for it. |
| |
AlexC
Registered: Jan 2008 Posts: 299 |
This sounds awesome :) Here is a page about it (but I'm sure you've seen it already) https://chessprogramming.wikispaces.com/The+Final+Chesscard . I had some interesting chat about it with Antitrack not long ago so I'd suggest to contact him - he may be able to provide more insight info. |
| |
tlr
Registered: Sep 2003 Posts: 1790 |
Quote: This sounds awesome :) Here is a page about it (but I'm sure you've seen it already) https://chessprogramming.wikispaces.com/The+Final+Chesscard . I had some interesting chat about it with Antitrack not long ago so I'd suggest to contact him - he may be able to provide more insight info.
That's not a dongle, it's a full coprocessor board. :) |
| |
AlexC
Registered: Jan 2008 Posts: 299 |
I still treat is as a dongle as the software could run without it. Probably there was no need for such specific coprocessor on c64 or PC/AT in the first place. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
I added (not yet working) dtl basic dongle emulation to the current trunk of VICE.
The current emulation does the following:
1- wait for the sense line to go high.
2- wait for the sense line to go low.
3- wait for the write line to go high.
4- wait for the write line to go low.
5- set the first bit of the bit sequence 0010 0100 0000 0010 (0x2402) on the read line.
After setting the first bit of the sequence the following needs to happen before setting the next bit:
1- wait for the write line to go high.
2- wait for the write line to go low.
Be aware that the current emulation keeps the 'old' bit set between steps 1 and 2.
The emulation 'shows' the correct bit pattern when using the 'dongle2.prg' file, but does not work (good enough) for the actual software.
Any help with more information, or fixing the emulation is appreciated. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
I added (not yet working) paperclip64 dongle emulation.
The current emulation does the following:
1- wait for the bit 4, 3 and 2 of the joystick port to become xxx000xx
2- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
3- wait for the bit 4, 3 and 2 of the joystick port to become xxx111xx
4- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
5- set the first bit-pair of the key on bits 1 and 0 of the joystick port.
The key sequence is : 02 00 00 01 03 02 01 03 02 01 02 01 02 01 02 00
01 02 00 01 03 03 02 00 00 00 00 00 00 00 01 03
03 02 00 01 02 00 01 02 01 02 01 02 01 03 02 01
03 02 00 00 01 03 03 03 03 03 03 03
After setting the first bits of the sequence the following needs to happen before setting the next bit:
1- wait for the bit 4, 3 and 2 of the joystick port to become xxx111xx
2- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
Be aware that the current emulation keeps the 'old' bits set between steps 1 and 2.
The emulation 'shows' the correct bit pattern when using the monitor to check what the code gets from the port,
but it does not work (good enough) for the actual software. |
| |
Zer0-X Account closed
Registered: Aug 2008 Posts: 78 |
Quote: I added (not yet working) paperclip64 dongle emulation.
The current emulation does the following:
1- wait for the bit 4, 3 and 2 of the joystick port to become xxx000xx
2- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
3- wait for the bit 4, 3 and 2 of the joystick port to become xxx111xx
4- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
5- set the first bit-pair of the key on bits 1 and 0 of the joystick port.
The key sequence is : 02 00 00 01 03 02 01 03 02 01 02 01 02 01 02 00
01 02 00 01 03 03 02 00 00 00 00 00 00 00 01 03
03 02 00 01 02 00 01 02 01 02 01 02 01 03 02 01
03 02 00 00 01 03 03 03 03 03 03 03
After setting the first bits of the sequence the following needs to happen before setting the next bit:
1- wait for the bit 4, 3 and 2 of the joystick port to become xxx111xx
2- wait for the bit 4, 3 and 2 of the joystick port to become xxx010xx
Be aware that the current emulation keeps the 'old' bits set between steps 1 and 2.
The emulation 'shows' the correct bit pattern when using the monitor to check what the code gets from the port,
but it does not work (good enough) for the actual software.
There might be two different dongle revisions. I have a version of PaperClip that checks bit 0 from dc01 and uses an extra eor-table if needed.
Also the key squence is looping and 64 bit-pairs long. The eor-routine dismisses the last four:
02 00 00 01 03 02 01 03 02 01 02 01 02 01 02 00
01 02 00 01 03 03 02 00 00 00 00 00 00 00 01 03
03 02 00 01 02 00 01 02 01 02 01 02 01 03 02 01
03 02 00 00 01 03 03 03 03 03 03 03 xx xx xx xx
then restart
http://oms.wmhost.com/PaperClipVerE.zip |