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

monster commit #68

Merged
merged 1 commit into from
Mar 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dosbox-*/**/.deps
dosbox-*/stamp-h1
dosbox-*/src/dosbox
dosbox-*/src/dosbox.exe
dosbox-*/src/dosbox_heavydebug.exe



Expand Down
30 changes: 30 additions & 0 deletions KNOWN_GAME_BUGS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

This file captures the known bugs that already exist in the games that are not introduced by this emulator.



# Return to Zork

* This game has no subtitles. (https://www.vogons.org/viewtopic.php?f=32&t=86635)
* The lack of the flashing effect when taking a photo is accurate. The game behaves this way on hardware, as well. (https://www.vogons.org/viewtopic.php?p=1052487#p1052487)
* The awful borders around the crank and box overlays in the hardware store are also accurate. (https://www.vogons.org/viewtopic.php?p=1052487#p1052487)
* When the Guardian disappears, the background appears far before the overlays fade in. This is also accurate. (https://www.vogons.org/viewtopic.php?p=1052487#p1052487)


# Lord of the Rings


* Hitting space+esc locks things up real good.
* Loading the demo on the title screen gives a "FMPOpen Error Code: 0" error message (https://www.vogons.org/viewtopic.php?p=1049075#p1049075)



# Man Enough

* No subtitles in first scene (see: https://www.vogons.org/viewtopic.php?p=1048737#p1048737)






8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ order to get things properly working in DOSBox, I had to make a few changes
to the MPEG decoder. More information on this can be found in the
`NOTES_MPEG.md` file.

## Known Game Bugs

Game bugs that are known to exist in both this emulator AND that also happen
wich a real hardware setup are documented in the `KNOWN_GAME_BUGS.md` file.
This helps with not spending too much time chasing phantom issues.


# Changes to DOSBox

Expand All @@ -61,6 +67,8 @@ The parameters are:
* `enabled` -- Enables/disables the ReelMagic emulator. By default this is `true`
* `alwaysresident` -- This forces `FMPDRV.EXE` to always be loaded. By default this is `false`
* `vgadup5hack` -- Duplicate every 5th VGA line to help give output a 4:3 ratio. By default this is `false`
* `magicfhack` -- Use for MPEG video debugging purposes only. See `reelmagic_player.cpp` for what exactly this does to the MPEG decoder.
* `a204debug` -- Controls FMPDRV.EXE function Ah subfunction 204h debug logging. Only applicable in "heavy debugging" build.


For example:
Expand Down
5 changes: 5 additions & 0 deletions ci/win32-cross/cross_compile_dosbox.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ export PATH="$INSTALL_PREFIX/bin:$PATH"

cd ../../dosbox-0.74-3
./autogen.sh
./configure --host="$TOOLCHAIN" --prefix="$INSTALL_PREFIX" --with-sdl-prefix="$INSTALL_PREFIX" \
--enable-debug=heavy LDFLAGS="-static-libgcc -static-libstdc++ -s" LIBS="-lvorbisfile -lvorbis -logg"
make -j
mv src/dosbox.exe src/dosbox_heavydebug.exe

./configure --host="$TOOLCHAIN" --prefix="$INSTALL_PREFIX" --with-sdl-prefix="$INSTALL_PREFIX" \
--enable-core-inline LDFLAGS="-static-libgcc -static-libstdc++ -s" LIBS="-lvorbisfile -lvorbis -logg"
make -j
Expand Down
1 change: 1 addition & 0 deletions ci/win32-cross/make_dosbox_zip_package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ rm -Rf "$PACKAGE_DIR" "$PACKAGE_DIR.zip"
mkdir -p "$PACKAGE_DIR"
cp ../../example.dosbox.conf "$PACKAGE_DIR/dosbox.conf"
cp ../../dosbox-0.74-3/src/dosbox.exe "$PACKAGE_DIR/"
cp ../../dosbox-0.74-3/src/dosbox_heavydebug.exe "$PACKAGE_DIR/"
cp "$INSTALL_PREFIX/bin/"{SDL.dll,SDL_net.dll} "$PACKAGE_DIR/"

mkdir -p "$PACKAGE_DIR/diagtools"
Expand Down
21 changes: 14 additions & 7 deletions dosbox-0.74-3/include/reelmagic.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ struct ReelMagic_VideoMixerUnderlayProvider {

virtual Bit16u GetPictureWidth() const = 0;
virtual Bit16u GetPictureHeight() const = 0;
virtual Bit16u GetZOrder() const = 0;
virtual bool GetUnderVga() const = 0;
};

void ReelMagic_RENDER_SetPal(Bit8u entry,Bit8u red,Bit8u green,Bit8u blue);
Expand All @@ -50,7 +50,6 @@ extern ReelMagic_ScalerLineHandler_t ReelMagic_RENDER_DrawLine;
void ReelMagic_SetVideoMixerEnabled(const bool enabled);
void ReelMagic_PushVideoMixerUnderlayProvider(ReelMagic_VideoMixerUnderlayProvider& provider);
void ReelMagic_PopVideoMixerUnderlayProvider(ReelMagic_VideoMixerUnderlayProvider& provider);
void ReelMagic_VideoMixerUnderlayProviderZOrderUpdate(void);
void ReelMagic_InitVideoMixer(Section* /*sec*/);


Expand All @@ -59,6 +58,9 @@ void ReelMagic_InitVideoMixer(Section* /*sec*/);
//
// player stuff
//

#define REELMAGIC_MAX_HANDLES (16)
typedef Bit8u ReelMagic_MediaPlayer_Handle;
struct ReelMagic_MediaPlayerFile {
virtual ~ReelMagic_MediaPlayerFile() {}
virtual const char *GetFileName() const = 0;
Expand All @@ -68,26 +70,31 @@ struct ReelMagic_MediaPlayerFile {
};
struct ReelMagic_MediaPlayer {
virtual ~ReelMagic_MediaPlayer() {}
virtual ReelMagic_MediaPlayer_Handle GetBaseHandle() const = 0;
virtual ReelMagic_MediaPlayer_Handle GetDemuxHandle() const = 0;
virtual ReelMagic_MediaPlayer_Handle GetVideoHandle() const = 0;
virtual ReelMagic_MediaPlayer_Handle GetAudioHandle() const = 0;

virtual void SetDisplayPosition(const Bit16u x, const Bit16u y) = 0;
virtual void SetDisplaySize(const Bit16u width, const Bit16u height) = 0;
virtual void SetZOrder(const Bit16u value) = 0;
virtual void SetUnderVga(const bool value) = 0;
virtual void SetLooping(const bool value) = 0;

virtual bool IsFileValid() const = 0;
virtual bool HasSystem() const = 0;
virtual bool HasVideo() const = 0;
virtual bool HasAudio() const = 0;
virtual bool IsLooping() const = 0;
virtual bool IsPlaying() const = 0;

virtual Bit16u GetPictureWidth() const = 0;
virtual Bit16u GetPictureHeight() const = 0;
virtual Bit16u GetZOrder() const = 0;
virtual bool GetUnderVga() const = 0;

virtual void Play() = 0;
virtual void Pause() = 0;
virtual void Stop() = 0;
};

typedef Bit8u ReelMagic_MediaPlayer_Handle;

//note: once a player file object is handed to new/delete player, regardless of success, it will be cleaned up
ReelMagic_MediaPlayer_Handle ReelMagic_NewPlayer(struct ReelMagic_MediaPlayerFile * const playerFile);
void ReelMagic_DeletePlayer(const ReelMagic_MediaPlayer_Handle handle);
Expand Down
2 changes: 2 additions & 0 deletions dosbox-0.74-3/src/dosbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,8 @@ void DOSBOX_Init(void) {
Pbool->Set_help("Enable the VGA DUP5 Hack. Duplicate's every VGA 5th line.");
Pint = secprop->Add_int("magicfhack",Property::Changeable::OnlyAtStart,0);
Pint->Set_help("MPEG debugging only! Consult the reelmagic_player.cpp source code and NOTES_MPEG.md");
Pbool = secprop->Add_bool("a204debug",Property::Changeable::OnlyAtStart,true);
Pbool->Set_help("Turns on/off FMPDRV.EXE function Ah subfunction 204h debug logging. Only works in heavy debugging mode. Consult the reelmagic_driver.cpp source code and RMDOS_API.md");

secprop=control->AddSection_prop("joystick",&BIOS_Init,false);//done
secprop->AddInitFunction(&INT10_Init);
Expand Down
Loading