Degrader V1.30 © 1991-93 Chris Hames. All rights reserved. (17700 bytes) ------------------------------------------------------------------------- You upgrade your system and what happens? The idiots who wrote your favorite program didn't follow the guidelines and it no longer works. This is where degrader comes in, it will try to degrade your system so that the old brain dead program will work on your machine. You can also just use it to boot off floppy drives other than DF0:, force your machine to PAL or NTSC, turn the audio filter on or off and other things. Please note that many of Degrader's functions are hacks in that they may not work on future versions of the Amiga hardware or software. The Early Startup Control provided in Kickstart 3.0 (just hold down both mouse buttons at reset to use) will help getting old software to work as well. Use its options where possible as they are more likely to work. *************************************************************************** If you don't know what all the technical junk is about but just want to get a program to work:- The most common way to get a brain dead program to work is to try this "Degrader NOFASTMEM NOCACHE PRIVILEGE FLOPPIES 0444 SURVIVERESET NOEDITOP" Or if you are running Kickstart 3.0 you should try something like "Degrader NOFASTMEM PRIVILEGE SURVIVERESET NOEDITOP" and then use the Early Startup Control to disable all disk devices except DF0:, disable CPU caches and select the ECS or Original chipset. If you what maximum speed on a machine with a data cache (68030+) and AGA (A1200/A4000) when the program works fine without Degrader but is NONDOS so you can't use SetPatch or CPU to turn on the extra features "Degrader ENLIGHTEN CACHESON SURVIVERESET NOEDITOP" *************************************************************************** When you run the program from workbench you are presented with various option buttons which you can toggle on(down & highlighted)/off:- 50Hz Changes the screen refresh rate to 50Hz (PAL). You can use this to view the extra lines a PAL machine has that a NTSC machine normally doesn't. Good for NONDOS disk games and demos that are designed for PAL machines only Requires ECS Agnus or Alice and a appropriate monitor. Note has varied effects with a AGA chipset depending on the screen mode. Kickstart 3.0 Early Startup Control has a similar function. 60Hz Changes the screen refresh rate to 60Hz (NTSC). Requires ECS Agnus or Alice and a appropriate monitor. Note has varied effects with a AGA chipset depending on the screen mode. Kickstart 3.0 Early Startup Control has a similar function. 50HzSystem Modifies GfxBase to give values that will make some programs think this machine is PAL. Useful in Kickstart 1.2/1.3. Doesn't seem to work well with Kickstart 2.0. Kickstart 3.0 Early Startup Control has a similar function. 60HzSystem Modifies GfxBase to give values that will make some programs think this machine is NTSC. Useful in Kickstart 1.2/1.3. Doesn't seem to work well with Kickstart 2.0. Kickstart 3.0 Early Startup Control has a similar function. AudFilterOff Most Amiga's have a audio filter which can be switched off and the power light usually dims as well. AudFilterOn Most Amiga's have a audio filter which can be switched on and the power light usually brightens as well. NoFastMem What this does depend on whether you selected for the machine to reset. If reset, it will stop any memory besides chip memory from being added to the system during reset. If Kickstart 2.0 or later is being used you can still add memory yourself. So if you wanted to save your Fast ram for a certain purpose you could use this option then when your machine boots up use ADDMEM to add the memory and you will have the full amount free. If you don't select a reset option it will patch the system so no Fast memory will be allocated by programs. HalfMegChip Sets the amount of chip memory your system has to 512K. Some programs don't like it if you have 1 or 2 meg of chip memory so use this option to trick the program into thinking you only have 512K of chip memory. If you don't select a reset option it resorts to some nasty memory list manipulation. OneMegChip Sets the amount of chip memory your system has to 1024K. Some programs don't like it if you have 2 meg of chip memory so use this option to trick the program into thinking you only have 1024K of chip memory. If you don't select a reset option it resorts to some nasty memory list manipulation. NoMemAt Allows you to stop a certain memory block from being added to the system memory list. If you don't select a reset option it just gives that memory block a priority of -128 so it is not allocated until you run out of other memory. NOTE: you must turn the Button "ON" as well as enter value. AddMem Adds memory to the memory list. Useful if you have a non-autoconfig memory board and want your memory added at reset time so it is used a lot more instead of your chip memory. NOTE: you must turn the Button "ON" as well as enter values. NoCache Turns off your Cache & Burst modes of 68020 or higher processors. Some games do what is called self modifying code and often end up with the processor executing what is already in the cache instead of what they intended. Kickstart 3.0 Early Startup Control has a similar function. Privilege Changes move SR, to move CCR,. MOVE SR, is privileged on processors 68010+. If a program gives a 00000008 GURU consistently this might help. Very few programs read the status register directly, even fewer get it wrong as well. TimeWaste Slows down your machine based on the value you give 65535 to 1. The smaller the number the slower your machine gets. Won't work with many programs as they take over or turn off the interrupt I use. NOTE: you must turn the Button "ON" as well as enter value. BlockDevice Stops programs from opening a specified device. DF0: is -> DF0: DF1: is -> DF1: DF2: is -> DF2: DF3: is -> DF3: Use these to swap drives around. Set a drive to DF4: to make it unuseable. Hence it won't take up precious chip memory. Only works with a reset operation. CachesOn Currently the system doesn't turn on the data cache, until SetPatch time (provided you have one of course (68030+)). This will turn on the instruction cache and burst as well as the data cache and could get you extra speed if it is not possible to run SetPatch before the program normally. Enlighten This is only relevant if you have the AGA chipset in your machine (such as A1200's and A4000's). The extra bandwidth and features aren't normally turned on until SetPatch is executed. If a NONDOSDISK program is written correctly enough for it to run with the extra bandwidth and new features then it could gain a lot of speed in graphics operations with them turned on. It only works with Kickstart 3.0. PromoteAll This only works with Kickstart 2.0 or later. It allows you to make all programs that call OpenScreen use a specific monitor. You must have a capable monitor and have it also in your devs/monitors drawer or similar. NOTE: you must turn the Button "ON" as well as enter value. Here are the values of some monitor types and uses:- $11000 Make all opened screens 60Hz. $91000 Make all opened screens use the NTSC DBL scan modes. $21000 Make all opened screens 50Hz. $a1000 Make all opened screens use the PAL DBL scan modes. $00000 Remove the monitor part from open screens. You can also do some complex things like force most screens to SUPER72 800*300 mode by giving a value of $81020. NoView This is usefull for AGA machines it will create a blank display and get the system very close to a ECS state. Does not work with reset options. *************************************************************************** After you have selected the options you want you have a choice of four buttons at the bottom of the screen. To do it now only, to do it now and then load and run a bootblock, to survive one reset only, or to survive resets until the left mouse button is held down and the right mouse button is not down at reset. If you do a reset selection your machine will reboot and at reset time your screen will go dark blue->light blue->dark orange->light orange. Note that some options require Kickstart specific code but should work with at least:- Kickstart 1.2 ROM. Kickstart 1.3 ROM and A3000 Kickstart 1.3 file. Kickstart 2.04 ROM and A3000 Kickstart 2.04 file Kickstart 2.05 ROM (37.300) Kickstart 3.00 ROM (39.109) The screen should go green at reset time if Degrader needs to be familiar with the Kickstart to do one of the selected options, but is not. *************************************************************************** If you start degrader from a Shell/CLI you can use all the keywords shown in the window display as described above, except the DF0: stuff. And there a few more:- Floppies This is the Shell/CLI interface to changing floppies. Give it 4 numbers with values 0-4. RunBootBlock Start the NDOS disk in DF0:. SurviveReset Reset then do all the goodies. SurviveResets Reset then do all the goodies. And still be there to do it next reset. Keep it up until the user press the left mouse button at reset. NoEditOp Don't bring up the window to edit options. *************************************************************************** Examples of using Degrader from a Shell/CLI:- "Degrader AUDFILTEROFF" Bring up option window with audio filter selected. "Degrader AUDFILTERON NOEDITOP" Turn the audio filter on. The option window is not used. "Degrader 60HZ 60HZSYSTEM" Bring up option window with 60HZ and 60HZSYSTEM selected. "Degrader ADDMEM $100000 5 10 $400000 SURVIVERESETS NOEDITOP" Add 1 meg of memory at $400000 at each reset from now on. "Degrader TIMEWASTE 50 SURVIVERESET NOEDITOP" Reset with hopefully a lot slower machine. "Degrader FLOPPIES 0444 SURVIVERESETS NOEDITOP" Reset and only have DF0: available. *************************************************************************** Thanks to the people who have helped with testing etc, especially:- Pekka Heino Andrew Morison Michael Chamberlain *************************************************************************** Common reasons why programs fail on one machine and work on others:- 1. Use processor to do critical timing loops and hence on different speed machines fail to delay the correct amount. This is often the reason why custom disk reading routines fail. Turning off your fast memory, caches and anything else that makes your machine faster than the slowest Amiga might help. 2. Use self-modifying code. The processor can end up running different instructions to the the ones just loaded or modified because the cache still holds the old values. You can turn off your caches. 3. Load into memory at a specific location. One machine might have more system hardware or a new OS could allocate more memory before the machine boots up and the program then overwrites memory already being used. Turning off or disconnecting any extra hardware, and disabling all drives except for DF0: often helps with this problem. 4. Use the hardware directly and don't write zeros to reserved/undefined bits. The next machine comes along and those bits now do something that the program didn't intend. If you have a AGA machine use the early startup menu to select the ECS or original chipset. Using the NoView option just before executing the program will often do the trick as well. *************************************************************************** Please note this program uses the ColdCapture, KickTagPtr and sometimes patches LVOAddMemList, LVOAllocMem, LVOAvailMem, LVOOpenDevice so good virus detectors, like mine :-), will give you warnings. This program may be copied as long as it is accompanied by this doc file both unaltered & no money is charged (except for a reasonable copying fee such as what Fred Fish charges). All use of this program is at your own risk & I assume no responsibility or liability for any problems that occur. If you want to contact me to give me a porsche or similar, Chris Hames Internet: bytey@werple.apana.org.au bytey@phoenix.apana.org.au FidoNet: 3:633/353 If the above addresses don't work, get the latest version of one of my other programs such as DirWork or PC-Task.