Index of /aggames/TOOLS/DEGRADER

      Name                    Last modified       Size  Description

[DIR] Parent Directory 21-Dec-2005 13:14 - [TXT] DEGRADER 04-Jan-1993 11:56 17k [TXT] DEGRADER.info 21-Mar-1996 08:26 1k

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,<ea>  to  move  CCR,<ea>.   MOVE SR,<ea> 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.