Menu

Ecco the Dolphin

gho
1 day ago
26 minutes ago
  • gho

    gho - 1 day ago

    Here is a game that despite the apparent simplicity hides very complex problems.
    There are mainly two game sources: the original Win32 CD version and a fully patched enhanced edition.
    The original CD doesn't work on recent Windows systems, despite all attempts that I made with DxWnd.
    The enhanced edition is a collection of many hacks and includes (I believe) a just-in-time patcher that fixes the game engine on the fly when you run the game through its frontend. This edition has one problem: it runs fullscreen only.
    I've been trying to mangle DxWnd with this patcher, but a double hooking is not supported. The only way that I found to get the game running in window was to hook the game with late-hook (the original "Window hook") and then run the game through the frontend. But the frontend doesn't work if run by DxWnd, so you have to turn DxWnd on and then run the frontend separately.
    All this is a little messy and, in addition, seems to easily bring some configuration corruption, so I'd prefer to understand what is the nature of the patching and replicate it on DxWnd, but the task doesn't appear to be simple.
    If anyone wants to take the challenge, the easiest way to get the fully patched release if to download the French automated version from .abandonware-france.org

     
  • crazyc

    crazyc - 20 hours ago

    No, bad program (it's waiting for vblank).

    Edit: I haven't seen it documented anywhere but if you open about, move it so the edge is off the right-bottom corner of the screen, hold ctrl-shift while pressing ok, then hold ctrl-shift again while right clicking on the main window, a level select menu appears.

     

    Last edit: crazyc 19 hours ago
  • huh

    huh - 16 hours ago

    I tried running the game here on Windows 7, but it uses the 16-bit disbdib.dll library, so it won't start.
    I tried running it through otvdm + DxWnd, but when I press GO F2, the game crashes.
    When I select Mode - High Detail and then press GO F2, the game starts, but the color palette is completely off and the window blinking.

     

    Last edit: huh 16 hours ago
    • BEEN_Nath_58

      BEEN_Nath_58 - 16 hours ago

      disbdib or dispdib?

      It is not really 16-bit, but something that lets direct VGA access, so it shouldn't work on 32bit Win7 either

       
    • crazyc

      crazyc - 15 hours ago

      There is a win16 and win32 version on the cdrom. The win16 version tries to start but has issues with window focus. The win32 one directly accesses vga ports. If run (on my computer) without dxwnd it dies with a directdraw error.

       

      Last edit: crazyc 15 hours ago
      • BEEN_Nath_58

        BEEN_Nath_58 - 13 hours ago

        I saw the 0xc0000096 that should come from the vga port tries. So is it trying to fill the framebuffer directly through dispdib or the more common, palette handling that DxWnd handles (till now).

         
        • crazyc

          crazyc - 12 hours ago

          As i said above it's waiting for vblank not setting the palette. Dxwnd does support this but it's checking for the wrong instruction sequence:

          // this pattern:
          // start: IN AL,DX ; I/O command
          // TEST AL,08
          // JNZ SHORT start or JZ SHORT start
          // is often used to sample the video card status and wait for a vSync status.
          // since the JNZ block is followed by a JZ block removing the IN instruction is not
          // enough to avoid an endless loop. You have to clear all 3 instructions.
          

          but this uses AND AL,8 not TEST. Also uses LOOPNE instead of J[N]Z.

           

          Last edit: crazyc 12 hours ago
  • BEEN_Nath_58

    BEEN_Nath_58 - 12 hours ago

    There is "Original game under emulator', CD ROM and "Fixed and enhanced version".

    What version did you test?

     
  • huh

    huh - 6 hours ago

    @BEEN_Nath_58
    dispdib.dll. It says unsupported 16-bit application.
    I tested the iso, "CD-ROM Version". The key is to set "Mode - High Detail".
    Here are my files.

     

    Last edit: huh 6 hours ago
  • huh

    huh - 6 hours ago

    @crazyc
    Well I believe I installed a 32bit application in my VirtualXP. Then I ported the game to Win7.
    Actually it works even without DxWnd if I turn on Mode - High Detail. No need for otvdm, I just found out now. But the palette is wrong.

     
  • gho

    gho - 1 hour ago

    Thanks for the information, today I should have more time to work on this, so I hope to make some progress and answer your questions.

    @huh: I have two installations of the game here from the AbandonWare-france.org site, one from the original and unpatched CD where I think I added this patch "Ecco-the-Dolphin_Win-3x_EN_Sega-PC-Reloaded.exe", the second is from the " Version automatique - Version Fixed and Enhanced" bundle. So far I made some confusion, so I think I'd better wipe them away and restart from scratch.

    I must point out that the second bundle works, it supports all game language versions (including Japanese) and the game can run fullscreen or windowed in a 1:1 or doubled size. The only thing that I don't like is that you can't stretch the window, of course in addition to the fact that I can't understand what's going on. And the game is not compatible with DxWnd at all.
    I would start again from the original version to see if the VGA accesses can be detected and fixed by DxWnd exception handler, the only way to set a correct palette.

     
  • gho

    gho - 26 minutes ago

    I got something ....
    First of all, I was puzzled by the fact that I couldn't register exceptions for VGA access. The reason seems to be that I forgot to add all the .DLL files that are on the CD inside the virtual CD folder. These DLLs don't include dispdib.dll, but now I can see a lot of these exceptions:

    dxwnd.DxWExceptionHandler: SKIP opcode=89,18 len=2 @0x100429b8
    

    but this corresponds to MOV DWORD PTR DS:[EAX],EBX, so it doesn't seem a VGA interrupt.

    Anyway, going further I tried @Huh's suggestion to set the game fullscreen + High detail mode. In this way the game starts, but I can only see a black window. But the game was hidden behinf that window, so setting the "Z-Order > Unlock" flag I was able to grab the game window and move it sideway, to show a perfect rendering, including the correct palette.
    I'm going to polish the configuration, try to get rid of the black window and understand what's going on ....

     

    Last edit: gho 25 minutes ago

Log in to post a comment.

MongoDB Logo MongoDB