-------------Lock 'N' Chase------------ A 4am crack 2014-05-03 --------------------------------------- Lock 'N' Chase is a 1982 arcade game distributed by Data East USA, Inc. and Mattel Electronics. COPYA gives no read errors, but the copy boots to an "UNABLE TO LOAD GAME" message and hangs. There is no VTOC on track $11 and no other clues to go on. Time for boot tracing! [S6D1=original disk] [S5D1=my work disk] ]PR#5 ... CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]CALL-151 *800<2800.28FFM *801L ; relatively normal boot0 loop to load ; more sectors from track $00 0801- A5 27 LDA $27 0803- C9 09 CMP #$09 0805- D0 3D BNE $0844 0807- A5 2B LDA $2B 0809- 8D F4 03 STA $03F4 ; figure out what slot we're booting in 080C- 4A LSR 080D- 4A LSR 080E- 4A LSR 080F- 4A LSR 0810- 09 C0 ORA #$C0 0812- 85 3F STA $3F 0814- A9 5C LDA #$5C 0816- 85 3E STA $3E 0818- 18 CLC ; $08F9 contains high byte of address ; to load boot1 code (-1, due to how ; the math works out -- regular DOS 3.3 ; does this too, except at $08FE and ; $08FF) 0819- AD F9 08 LDA $08F9 ; $08FA contains number of sectors to ; read 081C- 6D FA 08 ADC $08FA 081F- 8D F9 08 STA $08F9 ; clear hi-res screen 2 and display it 0822- A0 40 LDY #$40 0824- 84 01 STY $01 0826- A9 00 LDA #$00 0828- 85 00 STA $00 082A- A8 TAY 082B- 91 00 STA ($00),Y 082D- C8 INY 082E- D0 FB BNE $082B 0830- E6 01 INC $01 0832- A6 01 LDX $01 0834- E0 60 CPX #$60 0836- D0 F3 BNE $082B 0838- 2C 52 C0 BIT $C052 083B- 2C 55 C0 BIT $C055 083E- 2C 57 C0 BIT $C057 0841- 2C 50 C0 BIT $C050 ; translate physical sector numbers to ; logical sector numbers 0844- AE FA 08 LDX $08FA ; when out of sectors to read, ; execution continues at $085E 0847- F0 15 BEQ $085E 0849- BD FB 08 LDA $08FB,X 084C- 85 3D STA $3D 084E- CE FA 08 DEC $08FA 0851- AD F9 08 LDA $08F9 0854- 85 27 STA $27 0856- CE F9 08 DEC $08F9 0859- A6 2B LDX $2B ; jump back to disk controller routine ; at $Cx5C (will be $C65C if we're ; booting from slot 6) 085B- 6C 3E 00 JMP ($003E) ; done reading sectors, execution continues 085E- A9 00 LDA #$00 0860- 85 06 STA $06 0862- 85 83 STA $83 0864- 85 00 STA $00 0866- 8D 78 02 STA $0278 0869- A9 09 LDA #$09 086B- 85 07 STA $07 086D- 85 01 STA $01 ; don't know what this does yet 086F- 20 00 04 JSR $0400 So we're loading track $00, sectors $01..$04 into $400..$7FF, then calling $0400. Let's interrupt the boot there and see evil lurks in the hearts of men who write copy protection routines. *9600