Sega PC Reloaded

Discussion in 'Engineering & Reverse Engineering' started by Korama, Apr 2, 2015.

  1. Korama

    Korama

    Tech Member
    272
    0
    0
    Haha, I didn't know that would happen. But I'm not surprised. Ecco PC is quite a different beast from the other games. It's a mess internally with its multiple graphics modes.
    Yes, it doesn't allow you to move the window past a screen border, because the programmers were too lazy to handle clipping, or didn't know that there's an IDirectDrawClipper
    that would do the work for them...
    The Sonic games should go fullscreen only on the monitor they're currently on, because my code handles the switching there. Not so for Ecco.
    I am planning to bring it in line with the Sonic games, as far as the window handling is concerned, but that is going to take some major reworking.

    Hmm, that implies SONIC_P5.EXE gets tested, as it should be.
    The code makes a list of every .exe in the folder and then weeds out all the entries that don't have the expected name, version info, or other characteristics.
    You could try deleting SONIC_P5.EXE (it's useless anyway), and see if the error message changes.
    For some reason I can't explain, SONICCD.EXE is apparently not found on your system, although it is there! Are some compatibility or security settings enabled for it?

    Sonic's Schoolhouse? Ok, one more for the list.
     
  2. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    No valid executable found!
    Could not read list of imports

    If you need anything for Sonic's Schoolhouse, Sonic R, or Earthworm Jim Special Edition, I can help with those.
     
  3. Korama

    Korama

    Tech Member
    272
    0
    0
    I uploaded a new build that should constrain the game to the primary screen at least.

    Ok, now we're getting somewhere. So soniccd.exe is found, but the import check fails. The new build should give details why.
    And thanks for your offer, I'll get back to it when it's time. I have Sonic R myself, but not the other games.
     
  4. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    No valid executable found!
    Could not read list of imports: couldn't create file mapping: The parameter is incorrect

    I love error messages like that. Completely useless to anyone that isn't actively debugging the program when the error happens.
     
  5. Shadow Hog

    Shadow Hog

    "I'm a superdog!" Member
    IIRC the only real issue with Sonic's Schoolhouse is that the audio is completely hosed for everything but movie files.

    At least, that was the only issue when I last tried it.
     
  6. Korama

    Korama

    Tech Member
    272
    0
    0
    You and me both. "The parameter is incorrect" is coming straight from Windows (calling FormatMessage API with GetLastError).
    Anyway, I hope we have found the cause now. New build online NOW.
    Which version of Windows are you running, by the way?

    I think I got it, used a function that required Windows 8 or newer.
    It should work now on 7 and Vista, too.
     
  7. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    I'm running Windows 7 Home Premium Service Pack 1.

    Sonic 3D seems to have an issue with joypad control where it thinks 'Up' is always pressed; and the 'S' key and 'Enter' are both acting as start and there's no spin dash key with the default controls.
     
  8. Korama

    Korama

    Tech Member
    272
    0
    0
    Thanks for the info. I forgot I disabled the shift and control keys in Sonic 3D, while trying to implement custom controls. They aren't active yet, so you have to play the game with the default keyboard controls, the S/Enter thing is normal.
    The joypad issue is not. It works fine with my gamepad.
    Anyway, new build online that should fix the Sonic CD issue and the spindash key in S3D (shift, "B" also works).
     
  9. Ch1pper

    Ch1pper

    Fighting the Battle of Who Could Care Less Member
    690
    18
    18
    Life.
    I'd love to see Comix Zone running on a modern OS. Not sure what would be needed for that exactly, but I've got it here if you need help with it.
     
  10. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    Sonic CD installs now, but it also has the issue with Up being held while my Genesis controller is connected. I tried using the ADX music from Sonic Gems Collection but it's not playing. I suppose I should get the music from the Steam version anyway.
     
  11. Korama

    Korama

    Tech Member
    272
    0
    0
    Comix Zone is on my radar. I haven't done anything with it yet, but I know that it uses WinG, a precursor to DirectDraw, so that might or might not make things more difficult for me.

    I think I figured out the joystick issue. It's from my code mapping the POV hat / d-pad to the axes. My gamepad returns 0x0000FFFF for a centered POV, I guess yours uses 0xFFFFFFFF, which is actually the correct value (JOY_POVCENTERED). Should be fixed in the new build I just uploaded.
    I tried bass_adx.dll from the official website, with some adx files from Sonic Mega Collection Plus, and they worked.
    Thanks for all your testing, by the way!
     
  12. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    I guess bass_vgmstream is just weird then. It's not that big of a deal really.

    Do you think at any point that you'll want to make an enhanced sound file for S&KC like the one for SCD?

    Also, do you think it'd be possible to have the speed shoes and invincibility in S3D play the music made for them (tracks 21 & 22)?

    Thanks for making this, it's really great being able to play these games again.
     
  13. Korama

    Korama

    Tech Member
    272
    0
    0
    I didn't make the sound file for Sonic CD, it came from the original 16 bit release, but wasn't included in the 32 bit one (and even disabled in code there).
    But I have been thinking about custom sound effects for SCD and S&KC, I.e. using individual external files like Ecco and S3D already do.
    I'd also like to add a volume control for sound effects, because I find it annoying when games are significantly louder than other apps and don't offer that functionality.
    You can already control the bass.dll playback volume (Alt+Up/Down hotkeys). That reminds me, could you add volume control to smpsout.dll?
    In the form of another exported function like "SetVolume" or similar. No urgency, but it would be nice to have.

    Yes, Sonic 3D Blast doesn't play the speed shoes and invincibility tracks, even though they are on CD.
    The tracks are just never used by the game code, I checked. The only way that I can think of to enable them, is to understand the game logic,
    find the precise location of the piece of code that gets executed whenever those powerups become active, and then hack into it to start
    the appropriate tracks.
     
  14. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    I... have no idea? I mean, I didn't write any of the SMPS playback code, so I don't really know if there's a central volume control.
     
  15. Chibisteven

    Chibisteven

    Member
    1,313
    19
    18
    US
    Mandatory emulation of the Sound Blaster 16 chip in FM mode (as close to Windows 95 as you can get) and a choice of a sound font using General MIDI mode are stuff I want to see put in as tweaks for Sonic & Knuckles Collection. An ability to adjust MIDI and WAVE volume separately, too as you could do that with Win9X in if one or the other was too loud.

    An ability to turn off the text that says Kormara's Patches are active.

    Otherwise I love everything. I haven't been able to run 1996 PC version of Sonic CD since the last time I had a working Windows 98 Second Edition machine. I haven't been able to run Sonic 3D Blast since I last had a working Windows XP machine. Both of which are long gone. And Sonic & Knuckles Collection wouldn't terminate on it's own, I had to CTRL+ALT+DEL and end the process, now I can close the application and it terminates correctly. It's just the Microsoft Synthesizer (I hate that thing to hell) keeps dropping notes and SMPS that another person wrote has no lowpass filter option.

    I think it's an improvement to able to rip a game's redbook audio tracks and store it as FLACs. No stutters, no OS specific or hardware glitches or a few seconds on the track after one that's supposed to play type of crap. To me it's a major improvement. If there's was a way to do that with Sonic R, I be very happy as that would fix a few glitches that make the game hard to enjoy when you get it working.
     
  16. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    It turns out I could add it, and it's in the latest download. The function is defined as void SetVolume(double volume).

    Unfortunately, I'm still getting the problem with the games acting as if Up is held while joystick control is enabled, also it's got the Start/A/B/C buttons set to the D-pad, which is a common issue with this controller for some reason.

    Edit: I made a video:
    http://youtu.be/9Ga-t4IX5Dk
     
  17. Korama

    Korama

    Tech Member
    272
    0
    0
    Thanks for your feedback! I had the same problem with Sonic & Knuckles Collection not terminating properly, I mentioned it here before. It happens because when the game shuts down, it calls FreeLibrary to unload the music library MIDIOUT.DLL from memory, but for some reason, that causes an access violation in MIDIOUT.DLL. I found out that by calling the "initialize" function of MIDIOUT before freeing, the error won't happen.
    I will try to tackle Sonic R, but I can't say when.
    Concerning Sonic & Knuckles Collection and Sound Blaster FM: I don't feel that's my department. The game has outsorced its complete music to the mentioned MIDIOUT.DLL library, whose interface is known. So, anyone could relatively easily create a compatible replacement for it to change everything about the music.


    Great! By the way, I found another small issue with SMPSOUT: it expects that there's a MIDIOUTY.DLL. If there isn't, and you have a track configured to use the MIDI version, the game will crash. I think SMPSOUT should check first whether MIDIOUTY.DLL exists, and if it doesn't, use MIDIOUT.DLL instead.
    Weird issue with your controller. I hope it'll work better once I have completed the new joystick handling code.


    In other news, I got Bug! working, but it's not release-worthy yet (doesn't play its videos and music yet). The game lives up to its name and has a nasty bug in its DirectDraw initialization code, writing to a memory object that is allocated only later. But that's not actually what prevented it from running. As usual, it wants a 256 color video mode and also refuses to run in video modes wider than 1024 pixels. I guess they did this for performance reasons, but it was quite short-sighted, after all processing power is known to increase with each new CPU generation.
    The nice thing is that the software 3D engine scales, so instead of playing it like this (internal resolution: 320x240, stretched to 1920x1200) (or with halftone stretching, which is usable here, as the game runs at 30 fps, not 60), you can play it like this (internal resolution: 1920x1200). The textures and sprites are still awfully low-res up close, but they look nicer in the distance and the polygons are sharp.

    Bug! also has a hidden cheat code: in the Help / About dialog box, there's an invisible edit field that is supposed to capture key input. If you typed "babyseals", it should activate a cheat menu entry with a few options. However, I don't see any way to give input focus to that edit field so that it would actually receive keypresses. Maybe it worked in older Windows versions. Anyway, I can easily activate that cheat menu by other means.
     
  18. Chibisteven

    Chibisteven

    Member
    1,313
    19
    18
    US
    I wonder if MainMemory or ValleyBell could do it? Being that ValleyBell wrote the command prompt based emulator you can drag MIDIs into, I think? I still have that and have used it, but don't have the know how to take the engine and place it in to Sonic & Knuckles Collection itself. Probably solves the FM MIDI problems on modern hardware for good.

    The only other issue with General MIDI is lack of Sound Fonts and something that works similar to what foobar2000 allows when playing MIDIs with a GUI to configure things. That's a stretch in itself. Bypasses the ever crappy Microsoft Synthesizer that's been shoved down people's throats since the days of XP without the need for real MIDI hardware or fighting with the OS to get something to work. Be nice if there was someone willing to write a solution for that.
     
  19. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,556
    147
    43
    SonLVL
    I suppose I could do that, but normally, the DLL expects itself to be MIDIOUT.DLL, so there might be an issue if it is MIDIOUT.DLL and there's no MIDIOUTY.DLL?

    Yeah, I can't really help with that. Honestly I don't remember most of the stuff I did to get SMPSPlay integrated, which is unfortunate because the newer version properly supports 1-up music.
     
  20. Blivsey

    Blivsey

    Charismatic Sonicaholic Member
    SKC works great, but 3D Blast is giving me a completely blank error message just after loading the window:
    [​IMG]
    Log here.