Difference between revisions of "AGS/Upstream"

From ScummVM :: Wiki
< AGS
Jump to navigation Jump to search
m (Add extra pending commits for font rendering)
(Update upstream commit we are currently sync'ed with)
 
(44 intermediate revisions by 2 users not shown)
Line 6: Line 6:


This page contains the details of commits from the upstream AGS that either haven't been done yet due to various issues, or are being explicitly skipped due to changes that have been done in the ScummVM implementation.
This page contains the details of commits from the upstream AGS that either haven't been done yet due to various issues, or are being explicitly skipped due to changes that have been done in the ScummVM implementation.
ScummVM currently matches upstream commit <code> 820ee6c41427e3529a22ef46ac2799297a050876 - Updated build version (3.6.0.47), marking "final" 3.6.0</code> from April 1, 2023


== Still pending ==
== Still pending ==
Line 13: Line 15:
Changes the audio channels array to std::array<std::unique_ptr<SOUNDCLIP> ><br>
Changes the audio channels array to std::array<std::unique_ptr<SOUNDCLIP> ><br>
I couldn't get this to compile properly in ScumMVM with our version of std::unique_ptr.
I couldn't get this to compile properly in ScumMVM with our version of std::unique_ptr.
* 0f977a56f0b1cf293f711e8380bb9ddaa54d2573 - Reorder function linking steps
I tried applying the commit twice from scratch, and both times I ended up with a null pointer error dialog when starting QFG2VGA. So I'm not including it for now.
* 19a15acbf99ad223348c74d6de61cc56acc1ad69 - Engine: ListBox.FillDirList supports $DATA$ path token
* 19a15acbf99ad223348c74d6de61cc56acc1ad69 - Engine: ListBox.FillDirList supports $DATA$ path token
Added new AssetsManager method, but the current Listbox class has ScummVM specific stuff for save files in it's FillDirList method
Added new AssetsManager method, but the current Listbox class has ScummVM specific stuff for save files in it's FillDirList method
* 14679a430bf29acb6e511bb3799a5f99d9929463  115119eeb009fc7f2c5820b47bb866acad6498ec, 1273e64c1b82ffbcbbc90261952b6192bef9c966
* 30b44bc485941cc9ef0f0153657ae40416a0f5ec - Common: in streams don't implement Read/WriteInt8() by Read/WriteByte()
- Needs the full alfont to replace ScummVM's TTF renderer
Applying this commit caused startup of my QFG2AGDI test game to hang.
* 2fd9b8452c3bef53211c4f9d5e7f9cd34104248b - Engine: refactored parsing of a enum option represented as a string
Couldn't get the initializer list to work with our custom std::array implementation
* 696a8eb62ef162a40c5b464544d553ed1f01aa02 - Engine: updated parsing and use of "override/os" option
Couldn't get the initializer list to work with our custom std::array implementation
* 28a5c72321a925d1d81b27eb62a27226994c4aa8 - Engine: recreated FLIC playback as a FlicPlayer class
* 267874c54cde170d9cba9d7dc2c50e44cd0b906c - Engine: make SetChannel() take std unique_ptr, as it passes ownership
Because 1c535719d04473821c525c1956eeb1c8f1ef8c28 is spending as well (see above) and the two commits are linked.
* 90105f4af0f52018cd7dc3012bb3ab13c54cc7d1 - Engine: fixed AudioChans::SetChannel's return value
This fixes a bug introduced in 267874c, which is also pending
* 068c507cd70dd2b5de1e4a3d8b61c930466ce1b4 - Engine: rewrote handling of mod key combinations, for SDL backend
We do not use SDL events directly in the ScummVM AGS engine. However we need to check if we need to make a similar change.
* All the commits related to the "touch-to-mouse emulation" (https://github.com/adventuregamestudio/ags/pull/1773)
Is this relevant for ScummVM?
* fbb87c3370501d9acad9c7282c5e951032587c9e - Engine: fixed TOUCH hints breaking compilation against older SDL2
* Some Direct3D and OpenGL related commits, not used in ScummVM, but part of it may need to be reimplemented/adapted:
** 484f416cc35cd76231854edfa4756272b888a91a - Direct3D, OpenGL: replace viewport hacks with proper transform matrix
** 490522fdd412dcdb3c687f88143a62eb935de11a - Direct3D: support sprite batches rendering to a texture
** f1bc41994188eb4330c031a611bc72398ff1d405 - OGL: support sprite batches rendering to a texture
** 2a7895cde22b32bbc7ea60bc23e64152c80d6f80 - Engine: render GUI & controls batch to a buffer texture
** c91d3e70ceb9fdd0874dde80d806d8b927302bdd - Direct3D: implement proper blend op settings for a custom render target
** 3f086f1ef91d37b1d90208b798adf9a9b884a06e - OpenGL: implement proper blend op settings for a custom render target
** 5d72fe112cf08d82454e1bf55538ba8eb798461d - Engine: release render targets before switching the gfx mode
** bb039ddc807fc9df00baa184bde35b62b3f19bf4 - OpenGL: fixed custom render targets in "screen resolution" mode
** 4b900d73b5f544017c1935ddf542af7277ca752d - OpenGL: work with render targets of various sizes
** 14eb84c28a75e9756519c17aeaacce8b16343c9d - Direct3D: work with render targets of various sizes
** 6fec4943006960ae0a862e9e2af250ae4f9af8c5 - Direct3D: fixed rendering at screen resolution (when not stretched)
** d2f61af07f9751174a4859769570467669c2b1d2 - Engine: update render target if the GUI got resized
* 6fd7200ec85ace0abc5020faf79608f3385064e1 - Engine: use unique_ptr in VideoMemoryGraphicsDriver::ScreenFx
Couldn't get it to work with scummvm's implementation


== Currently skipped ==
== Currently skipped ==
Commits that are currently skipped, but may need to be referenced in the future.
* 22b0f2b93e314b167f80e89a9dd138202a7e28a7 - Engine: merged SOUNDCLIP and CLIP_OPENAL
* 22b0f2b93e314b167f80e89a9dd138202a7e28a7 - Engine: merged SOUNDCLIP and CLIP_OPENAL
ScummVM has it's own sound clip classes, so doesn't have CLIP_OPENAL
ScummVM has it's own sound clip classes, so doesn't have CLIP_OPENAL
Line 30: Line 61:
This is a bit mixed up with upstream's use of an audio core that ScumMVM doesn't use. But parts of the commit were included.
This is a bit mixed up with upstream's use of an audio core that ScumMVM doesn't use. But parts of the commit were included.
* c7028047deaf4417f048f7f395cd263ef87d4f55 - Engine: fixed panning SDL implementation
* c7028047deaf4417f048f7f395cd263ef87d4f55 - Engine: fixed panning SDL implementation
* 67f1d33c58fcf77037d82b57a8c6a269a0f3665c - Engine: a method for setting up a window icon via SDL2 or system api
* c727fe047671feaf3a8a476c1e3969ce683f10a2 - Common: fixed CreateAllDirectories could mistreat sub-path location
We don't currently create directories, and making these changes causes the method, which currently doesn't do anything by default, to crash.
* 72a3bf6c10a71ca7b7b80699a9bcc5a7c219bcbb - Engine: corrections for switching gfx mode
* 3b84d2daebc9d525a86f8cc3dabe83e04def188c - Engine: split OpenALDecoder into SDLDecoder and OpenAlSource
And the following commits to the split classes
* 73b009f35cbf5b4cc29fbf362e45dce10a64051c - Engine: for SDL_TEXTINPUT event, convert text to ascii for ags key code
Not sure if/how this applies to ScummVM since we dont have a TEXTINPUT common event
* 7ca933ba2c3bedfd46b6f66b8d6c4cb3184dc051 - Engine: replaced allegro's findfile with our own FindFile methods
Our code already uses ScummVM specific variants. If used in future, particularly need to worry about listbox and populating savegame list.<br>
This commit also addes a CurrentTime property to FindFile, which ScummVM can't support because Common::FSNode doesn't have a method to return a file/folder's datetime.
* 3acb00a7890ddb5d1688695948e89cf108f9a56b - Engine: suppress "unused param" warnings in dynobject (un)serialization
* 018d8790f8a8f3d39088cedace98b52d7ef730db - Engine: removed RichGameMedia header from saves
We use the rich media data for showing savegame thumbnails in the ScummVM GMM
* 9ff2b8efb7ea71c275e5f0c574df438ebbdc86d1 - Engine: fixed TheoraPlayer stopping too early on some videos
ScummVM has its own theora decoder code
* b93f6e097abd523dc0306ee44ce2905c880e5b5e - Engine: fixed AudioCoreSlot::Init() reopening decoder without need
ScummVM has its own audio code
* 0c0420616422dd192269e6c35886562151c03670 - Engine: in audio core, store data as uint8 rather than char
ScummVM has its own audio code
* Pull request #1666 - Restore support for sound streaming if file is big enough + sound cache for small sounds
** 868b221bfe53a7b2dd2b2017b64ee7bfc9a6cfdf - Engine: implemented custom RWops using AGS streams
** 0e6c996f263bfaf7fbe1be6bf44016f273aa3c7a - Engine: support sound data streaming, use if sound clip is large enough
** 7f755c875005ee8fc3f46735833ac2260d94e71c - Engine: reimplemented sound cache
** 216fec99630394cf61de0305bf9f40be82ae63a5 - Engine: let configure sound cache
ScummVM has its own audio code
* 623db88c135304bc3c462edffb742633ec50d608 - Allegro4: restored proper PACKFILE write behavior
In ScummVM we have custom code for PACKFILE access (and writing is not implemented).
* e1777f8c3bb92a668a10833ce6351d8c2fad58ad - Engine: decode more after sound rewind if last read chunk was 0 bytes
ScummVM has its own audio code.
* 92b7252ef1145d88c3fa2f45983372444ab03250 - Engine: in SDLDecoder::Open() fix potential assignment of duration -1
ScummVM has its own audio code.
* 18492820b7f6763e03c0daa064accf52ab8b6a1e - APEG: provided a break in case the OggS start was not found in file
ScummVM doesn't use apeg.
* 3990ab6d533bb101fad5cfc267b6faa88c1f189c - Engine: fixed listing saves for games with custom sav extension
ScummVM has custom savefile handling and is unaffected.
* f3970d07138cd71172070aeca7ad6c326e389d17 - Engine: fix agsblend plugin stub missing DrawSprite
Not needed in ScummVM
* 084f3f281359560a94ed819ff649edbf8bf9c4a0 - Engine: in OpenAlSource::GetPositionMs return prediction if no buffers
ScummVM has its own sound code.
* 6fc888e04c4130fb4f58bc2608438c4057cb0701 - Engine: fix gfx sw driver presented offset twice
Blitting code is different, should be fixed already
* 41eb660d599e94af31bfeb086392fce5cf1e1116 - Common: add bmp and pcx load and save from stream
And related commits
** c8d12571aba7f38231d9e96ccd6a34cd1bfa09ba - Allegro4: removed bmp and pcx load/save code
** bee3ecb7ef308312fd3149b62bb618e06e8d8310 - Allegro4: removed normal packfile implementation + unused datafile
** 680dc99d730285c3474bcf71494f1fdff694e8a3 - fix Makefile-defs.allegro
** 869bfd248929fc76dca506d73f05bcd5e063fd86 - Common: in bitmap loader replaced WRITE3BYTES with a Memory function
** 6aeb7d77ec15a61d208a012e4c855b4506155951 - Common: fixed Bitmap's SaveToFile not testing an opened stream
* 1b71780d6e94eca33ee3234fd138213874640ab1 - Engine: create raw draw screens only on plugin's demand
Different implementation
* 6dbff91f02f3ee53f1c21b797bf48f68f312b78c - Engine: csci gui messages uses intptr_t insted of long
Better solution already implemented

Latest revision as of 16:05, 29 April 2023

TODO List
Name AGS Upstream Porting
Technical Contact(s) AGS Engine Team
Subsystem Engine

This page contains the details of commits from the upstream AGS that either haven't been done yet due to various issues, or are being explicitly skipped due to changes that have been done in the ScummVM implementation.

ScummVM currently matches upstream commit 820ee6c41427e3529a22ef46ac2799297a050876 - Updated build version (3.6.0.47), marking "final" 3.6.0 from April 1, 2023

Still pending

  • cae84d689019313cad49b6dca7e916866b90e49e

We have slightly different blending code, commit needs to be modified to take that into account

  • 1c535719d04473821c525c1956eeb1c8f1ef8c28

Changes the audio channels array to std::array<std::unique_ptr<SOUNDCLIP> >
I couldn't get this to compile properly in ScumMVM with our version of std::unique_ptr.

  • 19a15acbf99ad223348c74d6de61cc56acc1ad69 - Engine: ListBox.FillDirList supports $DATA$ path token

Added new AssetsManager method, but the current Listbox class has ScummVM specific stuff for save files in it's FillDirList method

  • 30b44bc485941cc9ef0f0153657ae40416a0f5ec - Common: in streams don't implement Read/WriteInt8() by Read/WriteByte()

Applying this commit caused startup of my QFG2AGDI test game to hang.

  • 2fd9b8452c3bef53211c4f9d5e7f9cd34104248b - Engine: refactored parsing of a enum option represented as a string

Couldn't get the initializer list to work with our custom std::array implementation

  • 696a8eb62ef162a40c5b464544d553ed1f01aa02 - Engine: updated parsing and use of "override/os" option

Couldn't get the initializer list to work with our custom std::array implementation

  • 28a5c72321a925d1d81b27eb62a27226994c4aa8 - Engine: recreated FLIC playback as a FlicPlayer class
  • 267874c54cde170d9cba9d7dc2c50e44cd0b906c - Engine: make SetChannel() take std unique_ptr, as it passes ownership

Because 1c535719d04473821c525c1956eeb1c8f1ef8c28 is spending as well (see above) and the two commits are linked.

  • 90105f4af0f52018cd7dc3012bb3ab13c54cc7d1 - Engine: fixed AudioChans::SetChannel's return value

This fixes a bug introduced in 267874c, which is also pending

  • 068c507cd70dd2b5de1e4a3d8b61c930466ce1b4 - Engine: rewrote handling of mod key combinations, for SDL backend

We do not use SDL events directly in the ScummVM AGS engine. However we need to check if we need to make a similar change.

Is this relevant for ScummVM?

  • fbb87c3370501d9acad9c7282c5e951032587c9e - Engine: fixed TOUCH hints breaking compilation against older SDL2
  • Some Direct3D and OpenGL related commits, not used in ScummVM, but part of it may need to be reimplemented/adapted:
    • 484f416cc35cd76231854edfa4756272b888a91a - Direct3D, OpenGL: replace viewport hacks with proper transform matrix
    • 490522fdd412dcdb3c687f88143a62eb935de11a - Direct3D: support sprite batches rendering to a texture
    • f1bc41994188eb4330c031a611bc72398ff1d405 - OGL: support sprite batches rendering to a texture
    • 2a7895cde22b32bbc7ea60bc23e64152c80d6f80 - Engine: render GUI & controls batch to a buffer texture
    • c91d3e70ceb9fdd0874dde80d806d8b927302bdd - Direct3D: implement proper blend op settings for a custom render target
    • 3f086f1ef91d37b1d90208b798adf9a9b884a06e - OpenGL: implement proper blend op settings for a custom render target
    • 5d72fe112cf08d82454e1bf55538ba8eb798461d - Engine: release render targets before switching the gfx mode
    • bb039ddc807fc9df00baa184bde35b62b3f19bf4 - OpenGL: fixed custom render targets in "screen resolution" mode
    • 4b900d73b5f544017c1935ddf542af7277ca752d - OpenGL: work with render targets of various sizes
    • 14eb84c28a75e9756519c17aeaacce8b16343c9d - Direct3D: work with render targets of various sizes
    • 6fec4943006960ae0a862e9e2af250ae4f9af8c5 - Direct3D: fixed rendering at screen resolution (when not stretched)
    • d2f61af07f9751174a4859769570467669c2b1d2 - Engine: update render target if the GUI got resized
  • 6fd7200ec85ace0abc5020faf79608f3385064e1 - Engine: use unique_ptr in VideoMemoryGraphicsDriver::ScreenFx

Couldn't get it to work with scummvm's implementation

Currently skipped

Commits that are currently skipped, but may need to be referenced in the future.

  • 22b0f2b93e314b167f80e89a9dd138202a7e28a7 - Engine: merged SOUNDCLIP and CLIP_OPENAL

ScummVM has it's own sound clip classes, so doesn't have CLIP_OPENAL

  • ff05f69f2361c34212b6ba1db0f22b2c1ba38d7b - Engine: "transactional" SOUNDCLIP

ScummVM doesn't have the OPENAL decoder

  • 60d40072b429a641f6fcbf3cdb8c60809fc3f770 - Engine: dispose SOUNDCLIP when stopped playing

This is a bit mixed up with upstream's use of an audio core that ScumMVM doesn't use. But parts of the commit were included.

  • c7028047deaf4417f048f7f395cd263ef87d4f55 - Engine: fixed panning SDL implementation
  • 67f1d33c58fcf77037d82b57a8c6a269a0f3665c - Engine: a method for setting up a window icon via SDL2 or system api
  • c727fe047671feaf3a8a476c1e3969ce683f10a2 - Common: fixed CreateAllDirectories could mistreat sub-path location

We don't currently create directories, and making these changes causes the method, which currently doesn't do anything by default, to crash.

  • 72a3bf6c10a71ca7b7b80699a9bcc5a7c219bcbb - Engine: corrections for switching gfx mode
  • 3b84d2daebc9d525a86f8cc3dabe83e04def188c - Engine: split OpenALDecoder into SDLDecoder and OpenAlSource

And the following commits to the split classes

  • 73b009f35cbf5b4cc29fbf362e45dce10a64051c - Engine: for SDL_TEXTINPUT event, convert text to ascii for ags key code

Not sure if/how this applies to ScummVM since we dont have a TEXTINPUT common event

  • 7ca933ba2c3bedfd46b6f66b8d6c4cb3184dc051 - Engine: replaced allegro's findfile with our own FindFile methods

Our code already uses ScummVM specific variants. If used in future, particularly need to worry about listbox and populating savegame list.
This commit also addes a CurrentTime property to FindFile, which ScummVM can't support because Common::FSNode doesn't have a method to return a file/folder's datetime.

  • 3acb00a7890ddb5d1688695948e89cf108f9a56b - Engine: suppress "unused param" warnings in dynobject (un)serialization
  • 018d8790f8a8f3d39088cedace98b52d7ef730db - Engine: removed RichGameMedia header from saves

We use the rich media data for showing savegame thumbnails in the ScummVM GMM

  • 9ff2b8efb7ea71c275e5f0c574df438ebbdc86d1 - Engine: fixed TheoraPlayer stopping too early on some videos

ScummVM has its own theora decoder code

  • b93f6e097abd523dc0306ee44ce2905c880e5b5e - Engine: fixed AudioCoreSlot::Init() reopening decoder without need

ScummVM has its own audio code

  • 0c0420616422dd192269e6c35886562151c03670 - Engine: in audio core, store data as uint8 rather than char

ScummVM has its own audio code

  • Pull request #1666 - Restore support for sound streaming if file is big enough + sound cache for small sounds
    • 868b221bfe53a7b2dd2b2017b64ee7bfc9a6cfdf - Engine: implemented custom RWops using AGS streams
    • 0e6c996f263bfaf7fbe1be6bf44016f273aa3c7a - Engine: support sound data streaming, use if sound clip is large enough
    • 7f755c875005ee8fc3f46735833ac2260d94e71c - Engine: reimplemented sound cache
    • 216fec99630394cf61de0305bf9f40be82ae63a5 - Engine: let configure sound cache

ScummVM has its own audio code

  • 623db88c135304bc3c462edffb742633ec50d608 - Allegro4: restored proper PACKFILE write behavior

In ScummVM we have custom code for PACKFILE access (and writing is not implemented).

  • e1777f8c3bb92a668a10833ce6351d8c2fad58ad - Engine: decode more after sound rewind if last read chunk was 0 bytes

ScummVM has its own audio code.

  • 92b7252ef1145d88c3fa2f45983372444ab03250 - Engine: in SDLDecoder::Open() fix potential assignment of duration -1

ScummVM has its own audio code.

  • 18492820b7f6763e03c0daa064accf52ab8b6a1e - APEG: provided a break in case the OggS start was not found in file

ScummVM doesn't use apeg.

  • 3990ab6d533bb101fad5cfc267b6faa88c1f189c - Engine: fixed listing saves for games with custom sav extension

ScummVM has custom savefile handling and is unaffected.

  • f3970d07138cd71172070aeca7ad6c326e389d17 - Engine: fix agsblend plugin stub missing DrawSprite

Not needed in ScummVM

  • 084f3f281359560a94ed819ff649edbf8bf9c4a0 - Engine: in OpenAlSource::GetPositionMs return prediction if no buffers

ScummVM has its own sound code.

  • 6fc888e04c4130fb4f58bc2608438c4057cb0701 - Engine: fix gfx sw driver presented offset twice

Blitting code is different, should be fixed already

  • 41eb660d599e94af31bfeb086392fce5cf1e1116 - Common: add bmp and pcx load and save from stream

And related commits

    • c8d12571aba7f38231d9e96ccd6a34cd1bfa09ba - Allegro4: removed bmp and pcx load/save code
    • bee3ecb7ef308312fd3149b62bb618e06e8d8310 - Allegro4: removed normal packfile implementation + unused datafile
    • 680dc99d730285c3474bcf71494f1fdff694e8a3 - fix Makefile-defs.allegro
    • 869bfd248929fc76dca506d73f05bcd5e063fd86 - Common: in bitmap loader replaced WRITE3BYTES with a Memory function
    • 6aeb7d77ec15a61d208a012e4c855b4506155951 - Common: fixed Bitmap's SaveToFile not testing an opened stream
  • 1b71780d6e94eca33ee3234fd138213874640ab1 - Engine: create raw draw screens only on plugin's demand

Different implementation

  • 6dbff91f02f3ee53f1c21b797bf48f68f312b78c - Engine: csci gui messages uses intptr_t insted of long

Better solution already implemented