Olympic Decathlon (Microsoft, 1981)

Compete for the Gold Medal. I enjoy that game, it has many interesting features such as a smooth scroll on the intro page and the protection was interesting too... This is my second crack of that game, the first one had been done in 1991.


PROTECTION TYPE
disk protection (D5 AA B5, DE AA EB, D5 AA AD, DE AA EB)
ten sectors per track only!
...not even a DOS 3.2 disk structure...


BOOT TRACING
(T=Track, S=Sector)
T0/S0 is loaded at $0800..$08FF
The code loads the other sectors from T0 at $8900.$91FF (first part of the introduction)
- loads other parts of the game at $0F00 and $8000 and $9200
- read routine is located at $9000..$91FF (nice read routines)
Then code goes to $8000 (the second part of the introduction)
Then code goes to $9900

Each event is loaded at $2000, $4000 or $6000 depending on the needs for hires pictures


THE READ ROUTINE
The read routine located at $9000 requires the following information on ZPage:
$0B : slot * 16
$0C : the target phase (track number * 2)
$0D : sector
$0E : current phase (track * 2)
$03 : number of 256-byte page to load into memory
$07..$08 : address to load data


THE METHOD
I boot a DOS 3.3 diskette (the objective is to get a standard RWTS) then I rely on the original read routines to copy a disk, therefore:
- on drive 1, I put the original game,
- on drive 2, my blank DOS 3.3 volume 254 diskette
Then,
- 4600- 46FB:A9 59 8D 27 08 A9 FF 8D 28 08 4C 01 08
- 4600G
Now,
- you have the read routine in $9000, re-use it ;-)
- what I have done in a short program in $0300 to read one track from drive 1 and copy the data read in $4000 to the same track on drive 2.


ARRANGE THE DISK STRUCTURE
As I do not master the low-level disk read routines, I have put a standard RWTS on track 0 and I have copied the original track 0 data to sector F of track 0 to track 8 ;-) A smart person would have rewritten the read routine...
For those who are curious, the original read routine is on T7/SE, my modified read routine is on T7/SF.


THE NEW READ ROUTINE
You now have to rewrite the read routine at $9000. Please note that you need to keep the different wait routines in $91xx as they are used during the game.
Please refer to track 7, sector F to display the new read routine that uses the RWTS to load sectors into memory. Please note that the RTS opcode in $902C must remain as it is called during the event loading phases.


COMMENTS
- That was an interesting crack to do ;-)
- If you press * at the beginning of the introduction page, you are led to a disk backup routine. That is nice!
- It seems that pressing SWT (Timothy W. Smith) sometime during the introduction page goes to the monitor ;-)
- Sector editing is an interesting task to do as source code parts remain...


The disk image is available at https://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,
LoGo
2007