Shark - the emulator
Copyright (C) Magnus Danielsson <fuzzac@c64.org> 1998
Also by Carl-Henrik Skaarstedt <alta@c64.org> 1998
Promoted and developed by The Dead Serious Clan.

Thank you for taking a minute to read the following text
before using Shark to get the best entertaining experience!



Supported Games
---------------
Flying Shark by Toaplan, licensed to Taito/Romstar 1987
Hishou Zame by Toaplan, licensed to Taito/Romstar 1987
Twin Cobra by Toaplan, licensed to Taito/Romstar 1987
Kyukyoku Tiger by Toaplan, licensed to Taito/Romstar 1987



Emulator work in progress
-------------------------

    We are looking for more games to emulate. Please look at the
    end of this test file for a list of some of the ROMs we are looking
    for. If you think you can help us, please send an e-mail.
    We are out of games to emulate, so if you want to see any
    good Toaplan or Taito game emulated, please help us in our search!
    Soon to come - Neo-Geo-emulation from the Dead Serious Clan!



Conditions of use
-----------------
Shark is provided for free, personal use subject to certain terms and
conditions. Please take the time to read through these conditions before
using Shark.

    Shark is provided "as is" without warranty of any kind, either
    expressed or implied. Anyone using the program does so at their own
    risk. The author accepts no liability for any loss, damage or criminal
    offense arising from its use.

    The authors will not be held responsible for copyright violations by
    users of the emulator. Users are reminded that the game supported are 
    copyrighted and should not be distributed without permission.

    The Shark emulator is freeware. It may not be sold, or distributed
    as a part of a commercial package. It should not be distributed
    together with any rom images that are emulated by Shark.

    The distribution package may not be altered. No files may be 
    added/removed from the original archives. The original distribution 
    is zip compressed and contains only the following two files:
        shark.exe
        shark.txt

    To use Shark, you must agree to be bound by the conditions of use 
    listed above. If you cannot agree to these terms, please delete your 
    copy of the emulator immediately.



Change log
----------

V1.00   Initial release.
V1.01   A select resolution option added for people with mysterious
        graphics cards.
V1.02   Added support for Hishou Zame(Japanese version of Flying Shark).
        Game code was slightly different from Flying Shark.
V1.03   Added Joy support and option for manually setting the OPL
        address
V2.00   Fixed a bug with the enemy behaviour.
        Fixed the generic problem with the DirectX code which caused the emulator
        to crash on certain graphics cards with the message "generic failure".
        Fixed a sound crash on certain computers.
        Switched to Neil Bradley's Z80 emulator, which is about
        twice as fast as the old one.
        You can now run Shark without arguments for displaying your
        available DirectX resolutions.
        Created a links page on the Sharkweb.
        Optimized sprite rendering.
        Added 2 player simultaneous support.
        Fixed the enemy movement to be arcade perfect, thanks to the
        guys who pointed out the differances, and to those who asked
        if it really was supposed to be this difficult we can only say,
        no, it was even harder. And that is on the easiest setting.
        Added rotation 180 degrees for playing on special monitors.
        Added 5 virtual display modes, see options for usage.
        Added missing sprites in Flying Shark/Hishou Zame.


PLEASE NOTE:
        We constantly get mails saying that Shark does not support
        a certain video mode, even though the mode is specified
        as the preferred resolution.

        This is why:

        The preferred resolution is an option to tell Shark
        your first choice resolution. If the resolution is not
        supported by your DirectX drivers, Shark can ofcourse not
        use it. Instead, the closest higher resolution is chosen.
        To get the resolution you want, you might feel an urge to
        download new DirectX drivers or SciTech Display Doctor for
        your graphics card. SciTech Display Doctor will however not
        work on many computers, and if you have a problem with
        their software, please report this directly to SciTech.
        
        To display available resolutions with current display
        drivers, run Shark without arguments.

        Please remember that the resolution must at least be large
        enough to fit the "arcade screen" which is 320x240
        in normal mode and 240x320 in rotated mode. In doubled
        display modes, either x or y or both resolutions must also
        be doubled.



Distribution
------------

Shark is available at:  http://www.c64.org/~magnus/shark.htm

The Flying Shark, Twin Cobra and Kyukyoku Tiger ROM sets
can be found at Dave's Classics http://www.davesclassics.com
or http://hem.passagen.se/ogg/ or their linked sites.

The Hishou Zame ROM set can be found at
Arcade ROMs from Japan http://home.onestop.net/j_rom/



Requirements
------------
Pentium processor (100MHz or higher)
Win95/NT
DirectX version 3.0 or higher



Usage
-----

shark [game] [options]


games:
    flyingshark     European version of Hishou Zame
    hishouzame      Japanese version of Flying Shark
    twincobra       Twin Cobra
    kyukyokutiger   Kyukyoku Tiger, Flying Shark like version of Twin Cobra.

options:
    -sbbase=N  Set the SoundBlaster base address maually.

    -ns     Disable sound. 

            NOTE:
            The sound will only work on soundblaster compatible soundcards. This
            is because it uses the OPL sound-chip. It does so directly through 
            ports, so the sound won't work on Windows NT.
            If you can't hear any sound even though you have a soundblaster
            compatible soundcard and the OPL was detected correctly, check your
            MIDI settings. Make sure your MIDI works and that it uses FM 
            synthesis (not Software emulation). I had this problem with my soundcard,
            the windows default drivers disabled the OPL chip, so I had to 
            change drivers. The OPL on soundblaster is the same as the chip used
            on the arcade board.
            (sound is enabled by default)

    -r=90
    -r=180
    -r=270  Rotate the screen n degrees. Other values than these are not
            recognized. (default is 360 degrees rotation)

    -displaymode=N
            Select a virtual display mode. These modes are for doubling the
            display on cards that supports 2x size in either x or y, or
            do not support a mode near 320x240x16. The following displaymodes
            exists:

            -displaymode=0 - Default, no resize.
            -displaymode=1 - Skip every second line (min height 480 or 640)
            -displaymode=2 - Skip every second pixel (min width 640 or 480)
            -displaymode=3 - LCD-look = Mode 1 and Mode 2 (double both x and y)
            -displaymode=4 - Double every pixel in X (min width 640 or 480)
            -displaymode=5 - TV-look = Mode 1 and Mode 4 (double both x and y)

            Some tips on using these modes:
            if you have performance problems, displaymodes 0 and 1 are fastest,
            displaymodes 2 and 3 are somewhat slower and displaymodes 4 and 5
            are the slowest. We have not included any limitations to using
            these modes as various graphics cards seems to be able to use
            really strange resolutions.
            We tried Shark using the following setups with joyous results:
            Shark [game] -res=512x384 -r=90 -displaymode=2
            Shark [game] -res=512x384 -r=90 -displaymode=4
            To get a decent aspect ratio, adjust monitor width/height.
            If your monitor supports 320x480x16 we recommend using:
            Shark [game] -res=320x480 -displaymode=1
            Without specifying anything, Shark will always look for 320x240x16
            resolution or greater with a normal display mode (centered).

    -res=XxY
            Select a preferred resolution.
            Example: -res=512x384

    -t=N    Set game timing to N, where N is in Hz. This determines how many 
            times the game code is run each second. The original arcade is timed
            to 60Hz (NTSC), but you might want to change that to align with 
            your screen refresh rate, which probably is 60Hz, depending on the
            graphics card you are using.
            (default is 60Hz)

    -p1=joy
    -p2=joy Set the input device for player 1 and player 2. Default
            setting is keyboard cursor keys+ctrl+shift plus joypad 1
            for player 1 and keyboard C,V,B,F or G and A, Z plus
            joypad 2 for player 2. You can also choose other configurations
            from the following table:

            joy1    First detected joystick
            joy2    Second detected joystick
            key1    Keyboard setup 1 (same as default keyboard player 1)
            key2    Keyboard setup 2 (same as default keyboard player 2)
            def1    Default setting for player 1 (for swapping controls)
            def2    Default setting for player 2 (for swapping controls)

            example

            -p1=joy1 -p2=key1

            (Selects first detected joystick for player 1 and cursor keys+a/z
             for player 2)

    -d1=XX  Set dipswitch 1 to XX, where XX is a hexadecimal number.
            (default is 0h)

    -d2=XX  Set dipswitch 2 to XX, where XX is a hexadecimal number.
            (default is 91h)

            Look at the table below for description of the individual bits.
            If you can't figure out how these dip switches work, then don't use 
            them. The default settings is probably the ones you want anyway.
            The game is by default set to easiest possible, and I think it is 
            still hard enough.

            Default settings are (dsw1=0h, dsw2=91h):
                Test pattern Off
                Advertise sound = On
                Coin A = 1 coin 1 play
                Coin B = 1 coin 2 play
                Game difficulty = A
                Bonus settings = 50000, 150000
                Fighter count = 5
                Dip switch display = Off
                Continue play = On

        Dip Switch 1
        ------------
        Bit 0 Table type        (not used)
        Bit 1 Screen            (not used)
        Bit 2 Test pattern      1=On 0=Off
        Bit 3 Advertise sound   0=On 1=Off
        Bit 4-5 Coin A          00=1 coin 1 play 
                                01=2 coin 1 play 
                                10=3 coin 1 play 
                                11=4 coin 1 play
        Bit 6-7 Coin B          00=1 coin 2 play 
                                01=1 coin 3 play 
                                10=1 coin 4 play 
                                11=1 coin 6 play

        Dip Switch 2
        ------------
        Bit 0-1 Game difficulty     00=B  01=A  10=C  11=D
        Bit 2-3 Bonus settings      00=50000,150000
                                    01=70000,200000  
                                    10=50000 ONLY
                                    11=100000 ONLY
        Bit 4-5 Fighter count       00=3  01=5  10=1  11=2
        Bit 6   Dip switch display  1=On 0=Off
        Bit 7   Continue play       1=On 0=Off




example:
    shark twincobra -t=50 -r -d2=d0 -p1=joy1 -p2=key1 -displaymode=0

    which means:    select Twin Cobra
                    timing = 50Hz, rotate the screen 90 degrees, 
                    dip switch 2 is set to d0h,
                    player 1 plays the game with the first detected joystick,
                    player 2 plays the game with Keysetup 1,
                    choose normal display mode.            



Acknowledgements
----------------
DirectX and Sound support by Johan Khler
Starscream 680x0 Core version 0.24 by Neill Corlett
Multi-Z80 CPU emulator by Neil Bradley <neil@synthcom.com>


Thanks to:
    Neill Corlett for letting us use his great 68k engine.
    Neil Bradley for being so supportive with his z80 engine!
    Johan Khler for the DirectX and sound support.
    Lauri Sarkka for sharing various information about the arcade.
    Richard Bush, also for sharing some info about the arcade.
    Quench for the beta testing and hardware help.
    Neil Bradley for the Z80 emulator.
    Martin Olsson for the showing of and playing on arcade PCBs.
    Len Shikowitz for the sound testing.
    Bruno Gallion for pointing out the issue with the direction of enemy shots.
    Toaplan and everyone who enjoys our effort to bring their games home!



Controls
--------
The controls are the same in all supported games.

Pause                   = P
Player 1 start          = 1
Player 2 start          = 2
Insert Coin             = 3,4

[Keysetup 1]
Move Up/Down/Left/Right = Arrow keys
Shoot                   = Control
Smartbomb               = Shift

[Keysetup 2]
Move Up/Down/Left/Right = (G or H)/B/V/N
Shoot                   = Z
Smartbomb               = A

For calibrating the joystick, this is done in the
control panel in Windows.



Supported ROM set
-----------------

    [FlyingShark]

    Put the roms files in a sub-directory named "FlyingShark"

    Size    Name
    ------  ----------
    65 536  B02_01.512
    65 536  B02_02.512
    65 536  B02_03.512
    65 536  B02_04.512
    16 384  B02_05-1.ROM
    16 384  B02_06-1.ROM
    16 384  B02_07-1.ROM
    32 768  B02_08.ROM
    32 768  B02_09.ROM
    32 768  B02_10.ROM
    32 768  B02_11.ROM
    32 768  B02_12.ROM
    32 768  B02_13.ROM
    32 768  B02_14.ROM
    32 768  B02_15.ROM
    32 768  B02_16.ROM
    65 536  B02_17-1.ROM
    65 536  B02_18-1.ROM

    
    [HishouZame]

    Put the roms files in a sub-directory named "HishouZame"

    Size    Name
    ------  ----------
    65 536  B02_01.ROM
    65 536  B02_02.ROM
    65 536  B02_03.ROM
    65 536  B02_04.ROM
    16 384  B02_05.ROM
    16 384  B02_06.ROM
    16 384  B02_07.ROM
    32 768  B02_08.ROM
    32 768  B02_09.ROM
    32 768  B02_10.ROM
    32 768  B02_11.ROM
    32 768  B02_12.ROM
    32 768  B02_13.ROM
    32 768  B02_14.ROM
    32 768  B02_15.ROM
    32 768  B02_16.ROM
    65 536  B02_17.ROM
    65 536  B02_18.ROM

    [TwinCobra]

    Put the rom files in a sub-directory called "TwinCobra"

    Size    Name
    ------  ----------
    65536   Tc01
    65536   Tc02
     8192   Tc03
     8192   Tc04
    65536   Tc05
    65536   Tc06
    32768   Tc07
    32768   Tc08
    32768   Tc09
    32768   Tc10
     8192   Tc11
    32768   Tc12
    32768   Tc13
    65536   Tc14
    32768   Tc15
    65536   Tc16
    65536   Tc17
    65536   Tc18
    65536   Tc19
    65536   Tc20

    [KyukyokuTiger]

    Put the rom files in a sub-directory called "KyukyokuTiger"

    Size    Name
    ------  ----------
    65536   B30-01
    32768   B30-02
    65536   B30-03
    32768   B30-04
    32768   B30-05
    32768   B30-06
    32768   B30-07
    32768   B30-08
    32768   B30-09
    32768   B30-10
    32768   B30-11
    32768   B30-12
    65536   B30-13
    65536   B30-14
    65536   B30-15
    65536   B30-16
    65536   B30-17
    65536   B30-18
    65536   B30-19
    65536   B30-20



Contact us
----------
Please send any bug reports/comments/anything to:
    fuzzac@c64.org or alta@c64.org

If you know how we can get any of the following rom sets, or have 
information about them, please contact us.

Fire Shark/Shark Shark Shark
Truxton/Tatsujin
Truxton II/Tatsujin II
Flying Hawk
Outzone
Fixeight
Grindstormer
V-Five
Twin Eagle
Tiger Heli (Not the one floating around now, since the roms
            does not contain Tiger Heli, but Twin Cobra..Yes,
            we have checked.. and implemented it.. damn!)



Websites worth visiting
-----------------------

http://www.c64.org
http://rebels.amiga.org
http://www.netg.se/~drac
http://www.c64.org/~drac/NeoGeo.html



Last update April 29th 1998

