Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Play Midtown Madness's soundtrack without the need to insert its disc or mount an iso of the game? #117

Open
tetration opened this issue Sep 10, 2022 · 4 comments

Comments

@tetration
Copy link

In the original executable, the game's engine only plays the game's songs if the Midtown Madness 1 CD is in the driver or a backup iso file is mounted. Would it be possible to code this reversed-engineered version of the game to play the game's soundtrack without needing to insert the CD every time we want to play it?

What are the functions of the game responsible for this restriction? Are they hard-coded in the game's engine?

@0x1F9F1
Copy link
Owner

0x1F9F1 commented Sep 10, 2022

The music is stored on the CD just like a regular audio CD, and played using https://docs.microsoft.com/en-us/windows/win32/multimedia/mci. Most of the code to do this has already been reverse engineered at https://github.com/0x1F9F1/Open1560/blob/master/code/midtown/mmaudio/cd.cpp.

While adding support for playing the music from disk is on my TODO list, it's not high priority.

@Guspr181
Copy link

@tetration

Well actually is possible to play the game without using any dvd, for that you must do this three things:

  1. Use this line argument: "-cdid"

  2. Rip all the tracks from the cd in .ogg format using an external program and do it with the following names (track02.ogg,track03.ogg,etc) (skip track01.ogg because that is the data partition) and move them in a folder called "music" inside the root folder of the game.

  3. Move the following files from this portable program called "DxWnd" to the root folder of your game:
    vcda/winmm.dll
    vcda/winmm.ini
    dxwplay.dll
    libogg.dll
    libvorbis.dll
    libvorbisfile.dll

DxWnd Link: https://sourceforge.net/projects/dxwnd/

I hope that this was helpful :D

@tetration
Copy link
Author

tetration commented Jun 29, 2023

@tetration

Well actually is possible to play the game without using any dvd, for that you must do this three things:

  1. Use this line argument: "-cdid"
  2. Rip all the tracks from the cd in .ogg format using an external program and do it with the following names (track02.ogg,track03.ogg,etc) (skip track01.ogg because that is the data partition) and move them in a folder called "music" inside the root folder of the game.
  3. Move the following files from this portable program called "DxWnd" to the root folder of your game:
    vcda/winmm.dll
    vcda/winmm.ini
    dxwplay.dll
    libogg.dll
    libvorbis.dll
    libvorbisfile.dll

DxWnd Link: https://sourceforge.net/projects/dxwnd/

I hope that this was helpful :D

Thank you @Guspr181 ! I didn't know about the existence of dxwnd. Being able to play this game and other games of my childhood that rely on the CD in order to play the soundtrack will be a truly nostalgic experience. I'm going to try it out this weekend.

@ks202005
Copy link

   vcda/winmm.dll
   vcda/winmm.ini

This wasn't working for me, because I had them as \Midtown Madness\vcda\winmm.*
Placing them in the root as \Midtown madness\vinmm.* worked for me. That should have obvious to me since I know what DLL injection is but I know I won't be the only one who will make this mistake and tons of people unfamiliar with DLL injection will have no idea why it doesn't work so hopefully this helps someone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants