Skip to content

Commit

Permalink
monster commit
Browse files Browse the repository at this point in the history
Resolves issues:
  #65
  #64
  #63
  #62
  #61
  #60
  #59
  #58
  #55
  #54
  #52
  #46
  #45
  • Loading branch information
jrdennisoss committed Mar 17, 2022
1 parent fd9f3c3 commit 157285f
Show file tree
Hide file tree
Showing 11 changed files with 486 additions and 241 deletions.
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

0 comments on commit 157285f

Please sign in to comment.