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 ]