don't click here

60FPS cheat for Sonic Adventure International (DC)

Discussion in 'Technical Discussion' started by KabutoKun, Oct 2, 2015.

  1. KabutoKun

    KabutoKun

    Member
    1
    0
    0
    Hello guys, I've been unlocking the framerate for a lot of games lately, especially PSP games, but I have tried with a few games for other platforms too. This time I have a semi functional 60FPS cheat for Sonic Adventure International for Dreamcast.

    I have tested the cheat with several dreamcast emulators (Makaron, Demul, nullDC) and it works great. With nullDC you can test it very easily using nullDC cheater (or Chankast cheater with your nullDC executable name changed to "Chankast.exe") and adding the following lines to the code.ini file :

    ;Sonic Adventure International [HDR-0043] [V1.003]
    60FPS-Framerate 0075683C 00000001
    60FPS-Speed 00756844 00000001
    30FPS-Framerate 0075683C 00000002
    30FPS-Speed 00756844 00000002

    As you can see, we have to modify 2 addresses: Framerate (this one changes the framerate from 30 to 60, but using only this one makes the game run at double speed) and Speed (corrects the gamespeed). I added both with 30 and 60 FPS values, obviously you have to enable both Framerate AND Speed for your desired FPS.

    For information purposes: normal gameplay at 30FPS have both values with "2", game menus or Twinkle Circuit at 60 FPS have them both with "1", and while playing cutscenes the Framerate has "2" and Speed has "1".

    If you want to test the cheat with Demul or Makaron, you will have to use Cheat Engine to locate the dreamcast memory area within Demul emulator process. If you want to know the dreamcast memory start address, you can try 2 things:

    Method 1.
    Open the BIOS you are using with your emulator with a Hex editor (a bin file), search for the text "SEGA SEGAKATANA" (quotes not included), copy a few lines from there (as text) and search for them using Cheat engine within Demul memory. When you get a result where the last 4 characters of the addresses are both the same, replace them with 0000 and you have your start address for Cheat engine (example, you searched "SEGA SEGAKATANA" within your bios and the result was on hex 0000*07B0* (ignore all the *), then searched the same with cheat engine and the result was on 0258*07B0*, replace with 0000 and you have 0258*0000* which is your start address for cheat engine).

    Method 2.
    Open the IP.BIN of your game with a Hex editor, copy the first couple of lines with text (max 9 lines) and search for them using Cheat engine within Demul memory, you will get an address ended on 8000 (like 0258*8000*, ignore all the *), replace the last 4 characters with 0000 and again you have 0258*0000*, which is your start address for cheat engine.


    With my Demul version, the DC memory starts at 2C000000 (hex), the dreamcast has 16 MB of RAM so 2C000000 + 1000000 (16777216 bytes in hex, or 16mb) = 2D000000 which is your stop/end address, that's your search range.
    If you used one of the 2 methods above to know your start address, do the same as with Demul to get your stop/end address: StartAddress + 1000000 = Stop/EndAddress.

    With nullDC/Chankast cheater the dreamcast memory starts at 0x00000000, but with Demul it is higher for cheat engine, we can manually add the 60 FPS addresses doing this: the hex sum of StartAddress + 0075683C (this one will be 60FPS-Framerate), and the other one the hex sum of StartAddress + 0075683C (this one will be 60FPS-Speed).

    I don't have a working dreamcast but as this is a typical cheat, I supose you can use Codebreaker to test it on real hardware.

    THE BAD: :argh:/>/>
    The cutscenes run at double speed no matter what I do, if we can use the cheat with a condition to detect when we are really playing or if a cutscene is playing would be great (this can be done with PSP cheats), but I don't know if that is possible here.

    To finish this, 2 pictures to prove that this works and give you some motivation to test it by yourself (no video from me for now).
    [​IMG] 30FPS, look at the RPS/ingame FPS counter

    [​IMG] 60FPS, look at the RPS/ingame FPS counter

    Enjoy :v:
     
  2. Sappharad

    Sappharad

    Oldbie
    1,420
    72
    28
    This was posted back in August:
    http://forums.sonicretro.org/index.php?showtopic=17091&view=findpost&p=835332

    Per my video of it running on actual hardware, emulators don't handle it correctly and the game will slow down on the real thing instead of skipping frames.