<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/UICommon/GameFileCache.cpp, branch release-prep-2503</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>GameList: Show (Disc 1) for first disc of two-disc games</title>
<updated>2024-04-14T20:55:18+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2024-04-11T23:35:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=37b89d5b711d33db0a462d820cbbeebb6cd70c73'/>
<id>37b89d5b711d33db0a462d820cbbeebb6cd70c73</id>
<content type='text'>
Append disc label to the first disc of two-disc games too, rather than
only labelling the second disc.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Append disc label to the first disc of two-disc games too, rather than
only labelling the second disc.
</pre>
</div>
</content>
</entry>
<entry>
<title>GameFileCache: Use std::span with Update()</title>
<updated>2023-12-11T16:12:09+00:00</updated>
<author>
<name>Lioncash</name>
<email>mai.iam2048@gmail.com</email>
</author>
<published>2023-12-11T16:12:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=ff38362216ff3e73eb99f7fda90ec802da1386ff'/>
<id>ff38362216ff3e73eb99f7fda90ec802da1386ff</id>
<content type='text'>
All we're really doing is iterating over a sequence of strings, so we
don't need to tie this specifically to std::vector.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All we're really doing is iterating over a sequence of strings, so we
don't need to tie this specifically to std::vector.
</pre>
</div>
</content>
</entry>
<entry>
<title>GameFileCache: Pass std::function by reference rather than by value</title>
<updated>2023-12-11T16:09:18+00:00</updated>
<author>
<name>Lioncash</name>
<email>mai.iam2048@gmail.com</email>
</author>
<published>2023-12-11T16:04:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=2ca80adeb223bec7f7ce266d4c37d9e733a50899'/>
<id>2ca80adeb223bec7f7ce266d4c37d9e733a50899</id>
<content type='text'>
std::function is internally allowed to allocate, and these functions
aren't being stored anywhere (only called), so we can freely get rid
of some minor overhead here by passing by reference.

This change also creates aliases for the functions, so that there isn't
a lot of visual noise when reading the function signatures.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
std::function is internally allowed to allocate, and these functions
aren't being stored anywhere (only called), so we can freely get rid
of some minor overhead here by passing by reference.

This change also creates aliases for the functions, so that there isn't
a lot of visual noise when reading the function signatures.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Add support for CleanRip-style split ISOs.</title>
<updated>2023-03-05T18:23:55+00:00</updated>
<author>
<name>Admiral H. Curtiss</name>
<email>pikachu025@gmail.com</email>
</author>
<published>2023-02-12T21:08:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=655cc7f75cabf3a271e7dbfd4cecb9f214540817'/>
<id>655cc7f75cabf3a271e7dbfd4cecb9f214540817</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Android: Don't hold gameFileCache lock during updateAdditionalMetadata"</title>
<updated>2022-09-27T17:06:05+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-09-27T16:57:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=51debaeb47de93edec1ba10161df74a2f7f49209'/>
<id>51debaeb47de93edec1ba10161df74a2f7f49209</id>
<content type='text'>
This reverts commit fb265b610de08df5509e56beeb3dbff68f7d4396.

The optimization in that commit is safe when the executor thread is
writing and the GUI thread is reading, but I had failed to take into
account that it's unsafe when the GUI thread is writing and the executor
thread is reading. (The native UpdateAdditionalMetadata function loops
through m_cached_files, which is unsafe if another thread is adding
elements to m_cached_files simultaneously.)

Losing out on this optimization isn't too bad, because
719930bb390ed0020b99a7942289d83218e99d69 makes it very unlikely that
both threads will want the lock at the same time.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit fb265b610de08df5509e56beeb3dbff68f7d4396.

The optimization in that commit is safe when the executor thread is
writing and the GUI thread is reading, but I had failed to take into
account that it's unsafe when the GUI thread is writing and the executor
thread is reading. (The native UpdateAdditionalMetadata function loops
through m_cached_files, which is unsafe if another thread is adding
elements to m_cached_files simultaneously.)

Losing out on this optimization isn't too bad, because
719930bb390ed0020b99a7942289d83218e99d69 makes it very unlikely that
both threads will want the lock at the same time.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Replace IsDataSizeAccurate with GetDataSizeType</title>
<updated>2022-08-04T20:00:59+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-08-01T09:53:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=a87dffe52d8bfaa05d07770a9113cf9406ea6db0'/>
<id>a87dffe52d8bfaa05d07770a9113cf9406ea6db0</id>
<content type='text'>
Previously, we had WBFS and CISO which both returned an upper bound
of the size, and other formats which returned an accurate size. But
now we also have NFS, which returns a lower bound of the size. To
allow VolumeVerifier to make better informed decisions for NFS, let's
use an enum instead of a bool for the type of data size a blob has.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, we had WBFS and CISO which both returned an upper bound
of the size, and other formats which returned an accurate size. But
now we also have NFS, which returns a lower bound of the size. To
allow VolumeVerifier to make better informed decisions for NFS, let's
use an enum instead of a bool for the type of data size a blob has.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Add support for the NFS format</title>
<updated>2022-08-04T20:00:58+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-07-31T08:14:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=3a6df63e9bcfeedbcd9a479c9d0ba930d4939c1a'/>
<id>3a6df63e9bcfeedbcd9a479c9d0ba930d4939c1a</id>
<content type='text'>
For a few years now, I've been thinking it would be nice to make Dolphin
support reading Wii games in the format they come in when you download
them from the Wii U eShop. The Wii U eShop has some good deals on Wii
games (Metroid Prime Trilogy especially is rather expensive if you try
to buy it physically!), and it's the only place right now where you can
buy Wii games digitally.

Of course, Nintendo being Nintendo, next year they're going to shut down
this only place where you can buy Wii games digitally. I kind of wish I
had implemented this feature earlier so that people would've had ample
time to buy the games they want, but... better late than never, right?

I used MIT-licensed code from the NOD library as a reference when
implementing this. None of the code has been directly copied, but
you may notice that the names of the struct members are very similar.
https://gitlab.axiodl.com/AxioDL/nod/blob/c1635245b881ed0004ff5e616896579ce1b19164/lib/DiscIONFS.cpp
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For a few years now, I've been thinking it would be nice to make Dolphin
support reading Wii games in the format they come in when you download
them from the Wii U eShop. The Wii U eShop has some good deals on Wii
games (Metroid Prime Trilogy especially is rather expensive if you try
to buy it physically!), and it's the only place right now where you can
buy Wii games digitally.

Of course, Nintendo being Nintendo, next year they're going to shut down
this only place where you can buy Wii games digitally. I kind of wish I
had implemented this feature earlier so that people would've had ample
time to buy the games they want, but... better late than never, right?

I used MIT-licensed code from the NOD library as a reference when
implementing this. None of the code has been directly copied, but
you may notice that the names of the struct members are very similar.
https://gitlab.axiodl.com/AxioDL/nod/blob/c1635245b881ed0004ff5e616896579ce1b19164/lib/DiscIONFS.cpp
</pre>
</div>
</content>
</entry>
<entry>
<title>Convert PointerWrap::Mode to enum class</title>
<updated>2022-05-25T20:16:46+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2022-05-22T04:18:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c8e20c569b7deae97b411a6eea5c846f342bbf17'/>
<id>c8e20c569b7deae97b411a6eea5c846f342bbf17</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Common: Refactor PointerWrap</title>
<updated>2022-05-25T20:06:41+00:00</updated>
<author>
<name>Dentomologist</name>
<email>dentomologist@gmail.com</email>
</author>
<published>2022-05-18T05:29:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=f6b9acccfc66794cfc718355e777aa34914e881c'/>
<id>f6b9acccfc66794cfc718355e777aa34914e881c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Common/PointerWrap: Prevent reads/writes past the end of the buffer.</title>
<updated>2022-04-18T21:48:00+00:00</updated>
<author>
<name>Admiral H. Curtiss</name>
<email>pikachu025@gmail.com</email>
</author>
<published>2022-04-18T02:13:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=ef760ee012a1a7a9d8997fecce4f0c9a7122e1bd'/>
<id>ef760ee012a1a7a9d8997fecce4f0c9a7122e1bd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
