SUPERIOR DISK PROTECTION GUIDE
Dextrovix / RetroBBCThis guide assumes you know how to view memory address. From the BASIC prompt, type
> PRINT ~?&41B
will print the contents of address 41B in hexidecimal.
Version ONE - "Sector Read Fault" text appears in code
Used 1988, 1989Find the file on the disk that contains the attributes below:
[filename] 000400 000400 0000D9
START EXECUTE LENGTHSome games that use Version One protection are Quest 1988, The Last Ninja 1988, Barbarian 1988, Barbarian II 1989 and Predator 1989
From all of the examples above, the protected program code is loaded at 000400.
To start with type,
> *LOAD [filename]
to put the code into memory. Then make a note of the PRINTed contents of the following addresses.
At memory address &41B is the number of sectors which the program will read to gather the protected file code.
e.g.. contents of &41B = &28 then the file length will be &2800.
At memory address &49A and &49B is the execute address (reversed) when all of the code is loaded from the disc.
e.g.. contents of &49A = &03, &49B = &11 then the execute address of the code is &1103.
At memory address &4BF and &4C0 is the start address (reversed) to start loading the code from the disc.
e.g. contents of &4BF = &00, &4C0 = &11 then the start address of the code is &1100.To stop the code from executing the protected file code, type :
> ?&499 = &60 (return from subroutine)
then to run the loader type :
> CALL&400
This stops the program and returns the user to BASIC, whereby you can now save the data from the original, protected file to a blank disk (NOT the original). So from the above example the file had the following attributes:
[filename] 001100 001103 002800
START EXECUTE LENGTHSo from the prompt type
> *SAVE [filename] 1100+2800 1103
Once the one file has been recovered from the disc and saved, the game can be copied freely.
*COPY all of the other files to a blank disc and the game should work.THE LAST NINJA: Example of Version One Protection
Protected file = NINJA3
Original file info NINJA3 000400 000400 0000D9> *LOAD NINJA3
Information in loader file &41B = &1C (length)
&49A = &09 (execute
&49B = &23 address - reversed)
&4BF = &00 (start
&4C0 = &11 address - reversed)> ?&499=&60
> CALL &400
> *SAVE NINJA3 001100+1C00 2309De-Protected file info NINJA3 001100 002309 001C00
Version TWO - Used 1989 onwards
Find the file on the disk that contains the attributes below:
[filename] 000400 000400 0000D9
START EXECUTE LENGTH
e.g., Superior Soccer 1989, Ballistix 1989 and Ricochet 1989.Other have the same lengths, but different loader address:
Hostages uses FF0400 FF0400 0000D9
Perplexity uses FF1100 FF1100 0000D9With these, the offset is always the same, which means that 48 from the start address would mean 448, 948 or 1148 for the above titles.
To start with type,
> *LOAD [filename]
to put the code into memory. Then make a note of the PRINTed contents of the following addresses.
At memory address &408 is the number of sectors which the program will read to gather the protected file code.
e.g. contents of &408 = &15 then the file length will be &1500.
At memory address &448 and &449 is the execute address (reversed) when all of the code is loaded from the disc.
e.g. contents of &448 = &00, &449 = &20 then the execute address of the code is &2000.
At memory address &45D and &45E is the start address (reversed) to start loading the code from the disc.
e.g. contents of &45D = &00, &45E = &15 then the start address of the code is &1500.To stop the code from executing the protected file code, type :
> ?&447 = &60 (return from subroutine)
then to run the loader type :
> CALL&400
This stops the program and returns the user to BASIC, whereby you can now save the data from the original, protected file to a blank disk (NOT the original). So from the above example the file had the following attributes:
[filename] 001500 002000 001500
START EXECUTE LENGTHSo from the prompt type
> *SAVE [filename] 1500+1500 2000
Once the one file has been recovered from the disc and saved, the game can be copied freely.
*COPY all of the other files to a blank disc and the game should work.RICOCHET: Example of Version Two Protection
Protected file = RICODE
Original file info RICODE FF0400 FF0400 0000D9> *LOAD RICODE
Information in loader file &408 = &53 (length)
&448 = &36 (execute
&449 = &19 address - reversed)
&45D = &03 (start
&45E = &11 address - reversed)> ?&447 = &60
> CALL &400
> *SAVE RICODE 001103+5300 1936De-Protected file info RICODE 001103 001936 005300
This article originally appeared on the RetroBBC website.
http://www.geocities.com/SiliconValley/Lakes/7207/Index.htm