pouët.net

Reservoir Ripper by Reservoir Gods [web]

                           RESERVOIR RIPPER
                           ----------------

                           CODED BY MR PINK

                       (C) 1995 RESERVOIR GODS

                ** INTERNAL RELEASE - NO SPREADING **

The "Reservoir Ripper" is  designed  for  ripping graphics from Falcon
games and demos for use as screenshots in Maggie.

Its store pictures  in  a  new  GRIP  (Gods  RIPper)  format  with the
extension .RIP - this contains all picture data, screen dimensions and
all palette data.

Unfortunately this format  is  not  supported  by  any  art package or
viewer yet as I have just invented it. I am currently coding a viewer.
This format is designed for use in the Falcon Maggie shell.

There is now also the option  to  save  in .GOD format. No matter what
resolution you are running from it will convert the screen into a true
colour picture.

To access the ripper you will have  to  plug a jaguar joypad into Port
A. Run the ripper, install your  vectors, run your target program, get
to the place you want and press option!

                               LOADING
                               =======

The Reservoir Ripper can be loaded  in  one  of  two ways - either the
conventional way by just double clicking  on  it, or you can drag your
target program onto it. It fully supports  the command line, so if you
wish to rip a demo, drag it  onto  the ripper and this program will be
executed when the vector menu is exited.

Not all programs will load  properly  this  way,  and you may get some
problems when quitting. If this  happens,  exit  the ripper first then
load the program from the desktop in the normal way.

On loading you will get some  text  in  the normal TOS font, press any
key to go onto the vector installation menu.


                       VECTOR INSTALLATION MENU
                       ========================

This is the main control menu for the ripper.

The ripper works by latching itself onto various vectors, and here you
can choose which vectors to take  over.  The more vectors you use, the
slower the system will be and the greater the likelyhood of a crash.

I will give a quick over-view of the vectors and their functions:

TIMER A
-------

Used for DMA-Sound, tracker players etc.

TIMER B
-------

Used for palette switching, rasters.

TIMER C
-------
Use by TOS to monitor keyboard input - keyclick, key repeat etc.

TIMER D
-------
RS-232 baud rate generator  -  usually  unused.  This  is  a very fast
interrupt (very frequently called) and  will  slow things down quite a
bit.

VBL
---
Interrupt at the start of every frame. (The one to use if installing a
new Vector Base Register).

VBL QUEUE
---------
When system VBL is installed, routines here are executed.

TRAP #1
-------
File loading operations,  screen  printing,  key  inputs,  super mode,
executing files, memory allocation.

TRAP #2
-------
For GEM only - AES/VDI calls.

TRAP #13
--------
Key/printer i-o, exception setting,  system  timer info, drive bitmap,
keyboard shift info, read/write disk sectors.

TRAP #14
--------
Get/set screen, WAITING FOR VBL,  random, dsp communication, DMA sound
control, track read/write, exec in super mode, get/set time

IKBD
----
Keyboard Handler (+mouse & joystick)
Occurs on keyboard/mouse/joystick event.

BLITTER DONE
------------
Blitter command complete (usually off)

LINE A
------
Non-fast graphics functions. Mouse sprite on/off.

LINE F
------
some crap routines that no-one ever uses.

HBL
---
Horizontal blank - at low IPL levels only!

ERROR EXCEPTIONS
----------------
Takes over all system crashes - instead of bombing out the ripper will
be called. Bus error, address error, illegal instruction etc.

RS-232 INTERRUPTS
-----------------
All rs-232 exceptions  goto  the  ripper.  You  can  trigger events by
configuring the rs-232 port.

MONO MONITOR
------------
Plug in a mono monitor to trigger this interrupt.

MMU VECTORS
-----------
Memory configuration/addressing errors will trigger this interrupt.
NB - GEMDOS usually restores all these vectors.

TRACE EXCEPTION
---------------
Was going to be  the  centrepiece  of  stunning  new ripping technique
which dismally failed.

ALT-HELP
--------
Screen dump vector. Press ALTernate + HELP & OPTION.
Only valid if system IKBD handler is active.

FLOPPY/HD INTERRUPT
-------------------
IT IS NOT RECCOMMENDED THAT YOU USE THIS INTERRUPT!!!!
IT COULD LEAD TO DATA LOSS!!! YOU HAVE BEEN WARNED!!!!
If all else fails, not many games/demos take over this!

RESET
-----
Press reset. This is  not  for  ripping  purposes,  but for diagnostic
purposes. On pressing reset it  will  jump  to the vector installation
screen and the currently installed vectors will be asterisked.

VBR
---
This is the start address for  all  other exceptions. Just by changing
this and placing the VBL ripper you can get into about 90% of demos!
More details in the next section.


                       THE VECTOR BASE REGISTER
                       ========================

This is basically the  start  address  of  all  other  vectors. If you
change this you can create  your  own  vector  table that jumps to the
original vectors and appears  transparent  to  the current application
you are running.  Changing  the  VBR  is  the  best  way  to  get into
programs.

Putting this on RE-INSTALL mode  means other vectors will continuously
reinstall  this  new  VBR  (which  may  cause  some  problems  if  the
application changes the  VBR  as  my  vectors  will  jump  back to the
original system vectors).

One special function is achieved  by  putting  "MOVE VBR" into RESTORE
mode. As the VBR itself can't restore  other vectors, this is simply a
flag to indicate  we  want  to  do  something  more  crafty. Switching
RESTORE mode on means the  "Reservoir  Ripper" will fool programs into
thinking Lucky Of ST's  XGRABBER  is  installed.  For example, Inter's
StarWars demo checks if the vector  table  is changed and will exit if
there has been any  tampering  here,  unless  XGRABBER is installed in
which case it will carry on.  Some  demos  may detect for XGRABBER and
quit, so I didn't want  this  mode  permenantly  on,  but you have the
option to access it if all else fails!

                              RE-INSTALL
                              ==========

If a vector is  on  re-install  mode,  it  means  that  if a game/demo
disables it, it  will  be  re-installed.  It  will  intelligently jump
through the new vector so the program will still run properly.

The best things to put  on  re-install  are  the TIMERS, VBL, IKBD and
other MFP interrupts. It is pointless putting such things as TRAPS and
LINE A/LINE F on reinstall as most programs don't take these over.

                               RESTORE
                               =======

A vector which is on RESTORE mode  does all the housekeeping. That is,
it make sure the  program  isn't  being  nasty and de-installing other
vectors.

Vectors on RESTORE mode check all  vectors on RE-INSTALL mode and will
RE-INSTALL any vectors that have been changed.

This is an intelligent re-installation  that checks for zero, negative
and odd addresses, also check the relevant bits in MFP interrupt masks
to  determine  whether   to   reinstall   vectors.   Because  of  this
intelligence the routine can be quite time consuming, so don't put too
many vectors on RESTORE mode or the system will grind to a halt.

                             SAVING FILES
                             ============

You can save files in RIP or GOD (true colour) format.

Non true colour picture saved as  GOD  files will be converted to true
colour mode. The current screen is used  as a buffer for conversion so
ignore any mess in  the  top  lines!  (Just  pretend  it is the pompey
packer or something!)


Converting and Saving GOD files  to  FLOPPY  will  take AGES! You have
been warned! (save to Hard Drive or be prepared for a LONG wait!)

GOD PICTURE FORMAT:

Word:  "G4" (id)
Word:  X pixels
Word:  Y pixels
Words: Picture Data

RIP PICTURE FORMAT

Long:  "GRIP" (id)
Word:  X pixels
Word:  Y pixels
Word:  Res (0=mono, 1=2 colour, 2=4 colour, 3=256, 4=true colour)
Word:  Palette (0=st, 1=falcon)
Words: Palette Data (size dependendent on res/pal type)
Words: Picture Data

                             RIPPER MENU
                             ===========

On pressing 'OPTION' on  your  powerpad,  the  "Reservoir Ripper" will
appear on your screen.

It changes resolution into 640 x  200  2  colour mode. This only takes
16k of memory and this  screen  memory  is  part  of  the ripper so it
doesn't interfere with the game/demo you are ripping.

Screen setting is not via XBIOS, but pokes VIDEL directly.


The main ripper screen gives  information about the current resolution
and colour mode the falcon is in. The x and y dimensions of the screen
are displayed, along with  the  colour  mode.  All the important VIDEL
registers  are  displayed  including  all  the  horizontal  registers,
vertical registers, video clock, video  control,  sync, line width and
horizontal scroll.

[F1] VIEW SCREEN

Pressing F1 will revert the screen  back  to its old mode, dimensions,
colour and address allowing you to preview the screen you are about to
save. Pressing F1 again takes you back to the main menu.

Whilst on this screen you can alter the palette type:
Press [F2] To change to an ST palette
Press [F3] To change to a Falcon palette.

My auto palette detector should  calculate  the palette correctly, but
in case it doesn't you can now  change the palette setting on the view
screen, and see the effect.


[F2] VECTOR MENU

Allows you to reconfigure  the  vectors  that  are  set up and examine
which vectors have been taken over by the current game/demo.

When the ripper is called, it  checks  which  of its vectors are still
active. This are displayed as  asterisks  in  the install line of this
menu. You can re-install  any  vectors  you  want,  and change the re-
install and restore modes of vectors from here.

[F3] SAVE FILE (GOD)

Save screen in GOD file format.

If the screen mode is true colour, saving will be a quick process.

If non true colour, the picture is converted to true colour, which may
take some time, especially if saving to floppy.

[F4] SAVE SCREEN (RIP)

This saves all the picture  and  palette  information from the current
screen resolution.


                            TRICKS & TIPS
                            =============

The best way to use this  Ripper  is  to simply install the "MOVE VBR"
and "VBL". (Press F5 and R).  This  will  get into nearly every falcon
program.

Some demos move the vbr themselves, or detect for its change and exit.
In these cases, don't turn on the  "Move VBR" option and instead try a
lot of fiddling!


The best vectors to use  are  the  TIMERS.  Timer  C  and D are rarely
changed by programs. The TRAPs are  never usually changed, but are not
accessed every VBL, although  some  demos/games  will  use trap #14 to
wait for the vertical blank (e.g. Papa was a bladerunner by EKO).

The IKBD is another good thing to take over, although you will have to
move the mouse/touch the  keyboard  AND  press  option  to trigger the
ripper.

A useful default configuration would be:

            INSTALL             REINSTALL              RESTORE
TIMER A        *                   *
TIMER B        *                   *
TIMER C        *                   *                      *
TIMER D        *                   *
VBL            *                   *
VBL QUEUE      *
TRAP #1        *                                          *
TRAP #2        *                                          *
TRAP #13       *                                          *
TRAP #14       *                                          *
IKBD           *                   *                      *



That is having all TIMERS, TRAPS, VBL, VBL QUEUE & IKBD installed.
TIMERS, VBL and IKBD will be re-installed if disabled.
The traps, ikbd and timer c handle the RE-INSTALLING.

                                 BUGS
                                 ====

Loads!

The main problem is with TIMER D.
DO NOT put TIMER D on RESTORE  mode  if lots of vectors are on RESTORE
and REINSTALL mode! It will crash!

You can put every single  vector  on INSTALL, everything on RE-INSTALL
and all on RESTORE except TIMER D.

You can put timer d on restore  mode  if not many other vectors are on
restore/re-install mode.

Keyboard handler is shagged after reset.

I have fixed the  bugs  with  the  screen  handling  and it will quite
happily change between screens in  a  multitude of resolutions on both
RGB and VGA monitors. It  isn't  so  keen  on viewing huge resolutions
though (1600 * 600 etc).

                            SCARY WARNING
                            =============

This program is not for spreading. If  demo coders see which vectors I
am taking over they may trash them to prevent picture ripping.

[ MR PINK : after the storm ]