找回密码
 立即注册

微信扫码登录

使用验证码登录

QQ登录

只需一步,快速开始

查看: 168|回复: 7

Dolphin Progress Report: Release 2503

[复制链接]

90

主题

78

回帖

5181

积分

版主

积分
5181
发表于 3 天前 | 显示全部楼层 |阅读模式
https://cn.dolphin-emu.org/blog/ ... lease-2503/#cuthere



                               
登录/注册后可看大图
[tr]It's time for us to again delve into the latest changes hitting the newest release of Dolphin Emulator. If you've been keeping tabs on development channels, you'll know there are some exciting bombshell features waiting for us just over the horizon. Unfortunately, given the close proximity to this release, we've decided to hold a lot of them off so they can get more widespread testing in the development builds before hitting a release. Think of the March 2025 release as an iterative improvement that focuses on user experience and stacking many small iterative improvements instead of swinging for every homerun.
[tr]Having said all of that? We do have a few major changes that made the cut.
[tr]Probably the most requested of the features in this progress report is the ability to finally[tr] set custom graphical settings on a per game basis. Our advanced users may be thinking, "Wait, couldn't we already do that?[tr]" and they'd be right. The major change here is that per-game graphical settings has been added directly to the game properties page, allowing for a very easy, visual way to change settings and see what settings are force enabled.
[tr]For our achievement hunters out there, RetroAchievements has seen its first major upgrade that will bring a huge amount of quality of life to many games. And if you're into weird old game behaviors? A developer dove into Summoner: A Goddess Reborn[tr] to determine why it crashes so much. The catch with this one? Some of these crashes have been confirmed to happen on official hardware!
[tr]Additionally, there are a plethora of small, but tangible, changes that are the hallmark of an Open Source project. The desktop versions of Dolphin also saw a lot of improvements to input configuration and a few extra[tr] upgrades that might make people who want to track their time spent in games very[tr] happy. But, let's not spoil everything and get into the notable changes of the March 2025 release!

Notable ChangesCheat Code Whitelist for Hardcore RetroAchievements - 2412-8[tr] and 2412-173[tr] by LillyJadeKatrin
[tr]RetroAchievements in Dolphin has received its first major update, and it's... cheat support in hardcore?! What gives?

[tr]Up until around the 7th generation[tr], video game consoles did not have operating systems, and software had complete control over the hardware. While "running on the metal" is simple and efficient, the only security on such systems was the proprietary interfaces needed to load code onto the machine. If someone could fashion a device that could access the memory of one of these consoles, they could do effectively anything.
[tr]What did gamers do with this incredible power? Cheat at video games of course!
[tr]An entire cottage industry developed around cheating, with dedicated hardware, companies, jobs[tr], and entire communities, all built on cheats! By the time the GameCube arrived, a [tr]cheat device video game enhancer[tr] was guaranteed to come out shortly after a console launched, a customer could buy one in the same retail store where they bought the console and buy games, and they could find tens of thousands of codes readily available for free on the internet! For a moment, cheating was mainstream[tr] (within the niche market that was video gaming at that time).
[tr]During this era, the kind of player who would buy a device to cheat at video games was also the kind of player who would dump their games to emulate them on PC. In fact, many game enhancers had the ability to dump games! This overlap made cheat support an essential feature[tr] for emulators. Because Dolphin's development began in this era, Dolphin supported Action Replay[tr] codes before it supported Wii games.
[tr]However, cheat systems are still just a way to edit memory. It didn't take long for emulator users to figure out that they could use cheat systems for far more than just cheating at video games. They could use cheats to change the game itself[tr]. Widescreen aspect ratio codes, anti-invert stick codes, bloom removal codes - most of the "cheats" being developed today aren't for cheating at all, but to adjust games to better fit modern sensibilities, add quality of life changes, or improve accessibility.

                               
登录/注册后可看大图

[tr]When RetroAchievement support in Dolphin launched late last year[tr], cheats and many other features were disabled whenever RetroAchievements' hardcore mode was active. The leaderboard is for those that take achievements seriously and want a record of their accomplishments, so cheats could trivialize their efforts. But once RetroAchievement support was merged, those same overachievers pleaded with RA staff for limited cheat support in hardcore mode. Cheats remain the primary way to patch unfortunate game behaviors and add quality of life improvements, and the hardcore community wanted to be able to utilize those kinds of cheats while climbing the leaderboard.
[tr]After some deliberation within the RetroAchievements staff, the conclusion was an allowlist. Select and specific[tr] cheat codes are now able to be used in RetroAchievements' hardcore mode. Most of them are widescreen aspect ratio codes, but there are other changes as well, such as unlocking the C-Stick to smash feature in single player Super Smash Bros. Melee[tr] modes, or codes to fix game issues like freezes and bugs. Now overachievers can enjoy the thrills of Gotta Get 'Em All[tr] in the comfort of 16:9.
[tr]As part of this effort, LillyJadeKatrin[tr] went through our wiki[tr] looking for cheat codes, then spent hours adding hundreds[tr] of new cheats to Dolphin's built in cheat code database. Everyone benefits from this, whether achievement hunting or not!
Qt Input Mapping Lightning Round[tr] by Billiard
[tr]For the past couple of months, Billiard[tr] has been going through Dolphin's input mapping systems like a storm, cleaning up and improving dozens of things! There are too many for us to even show, but here are some highlights.
[tr]Note that most of these changes only apply to desktop builds of Dolphin; Android is not affected.
2412-105 - Make input mapping and output testing non-blocking
[tr]Input entry is now non-blocking, and multiple input mappings can be queued/un-queued/cleared without locking the UI.
[tr]Input mapping now feels much more responsive.
2412-183 - DolphinQt: Replace MappingButton bold text with graphical indicators
[tr]For years, Dolphin's mapping windows have had some sort of indicator that would light up when the user presses a button that is mapped to an emulated button. This is a quick and easy way to confirm to the user that they have successfully mapped a button and that it is working correctly. However, how that indicator looks and works has changed dramatically.
[tr]When the mapping indicators were first introduced, they were red graphical indicators that were detached from their associated buttons.

[tr]When we moved from the WX interface to the Qt interface[tr] we now use on desktop, this was changed to lighting up the input within the mapped button itself simply by bolding it.

[tr]It was never a great[tr] solution, but it was good enough and was simple to implement in the storm that was our move to Qt. It left us a little wanting though.
Billiard[tr], thinking back to the original design, realized that with Qt, we could do something MUCH better.
[tr]Dolphin's input indicators are once again graphical! But this time near their associated buttons for high clarity.
2412-289 - Add setting to enable waiting for alternate mappings
[tr]Dolphin's advanced mapping window is incredibly powerful, with all of our mapping complexity laid bare and ready for all the input shenanigans a power user could dream of. However, most users don't want to interact with all of our mapping complexity, but they may want to do some basics such as AND and OR. AND was possible simply by pressing two buttons at once, and then it would require the player to press both buttons to send the emulated input, simple. But OR required going into the advanced input mapping window. Given how often users want to be able to press either of two physical buttons to engage single emulated button, Billiard[tr] wanted some way to accomodate that without requiring users to plunge into the depths of our mapping system.
[tr]To achieve that goal, there is now a new option - Wait for Alternate Input Mappings[tr]. When this feature is enabled, there is a small delay added after each input, allowing users to make multiple individual[tr] inputs. For example, to map two physical buttons to one emulated button, with this feature all a user needs to do is press one button on their controller, then quickly press the next button. Now either input will trigger the emulated button. Simple as that!
[tr]Wait for Alternate Input Mappings allows for simple OR mapping without confronting the complexity of Dolphin's advanced mapping window.
[tr]To access this feature, click the arrow beside Refresh.

                               
登录/注册后可看大图

2412-292 - Add setting to enable iterative input mappings
[tr]Iterative input is a nice feature that can take some of the tedium away from configuring a controller. Having to look down, figure out what button you want to push, then use your mouse to go to the next input over and over again can be annoying, especially if you're just trying to set things up as a couch gamer. That's where iterative can really shine. But, unfortunately, its history with Dolphin has been rocky at best.
[tr]The upside is clear - with just a single click, iterative input allows a user to go through every input on the screen one by one without needing to return to your mouse or keyboard. This feature took so long to return because it's hard to do right, especially with controllers as complicated as the Wii Remote. Last time, problems were revealed[tr] and it was easier to remove it outright than to fix it.
Billiard[tr] has given it another go, with a brand new implementation that doesn't suffer any of the issues of the original. Plus, with the non-blocking changes above, it now is a much smoother experience simply from being implemented now. Iterative input is currently disabled by default, but can be enabled in the controller mapping window.

                               
登录/注册后可看大图
[tr]You can now find iterative input by clicking the arrow beside Refresh.

Input mapping expression improvements - 2412-211, 2412-231, 2412-266[tr] and more
[tr]For our advanced input mapping extraordinaires, Dolphin's input expression parser saw many improvements.
  • Conditional Operator Added
    [tr]Dolphin's mapping expressions have long provided an "if" function for creating conditional expressions: if(`A`, 1.0, 0.6)
    [tr]But this syntax can be cumbersome and unfamiliar, so the ternary conditional operator syntax that's present in many other programming languages has finally been added: `A` ? 1.0 : 0.6
  • Assignment Operator Fixed
    [tr]Probably unknown to most users, mapping expressions support user-defined variables. These can be used to share state across frames, with other mappings, or just in as a means of organization. This can allow for very customizable and dynamic control schemes. Variables are created with the $ symbol and can be given a value using the familiar assignment operator = . For instance: $x = `A` ? 1.0 : 0.6
    [tr]Sometimes writers of complex mapping expressions like to describe their calculations as a multiple step process. The comma operator was already provided for this, and functions like it does in other programming languages. This contrived example below effectively does the same thing as the previous example, but in two steps, which can sometimes create more-readable or maintainable code when the calculations get overly long winded. For example: $a = `A`, $x = $a ? 1.0 : 0.6
    [tr]For technical reasons that we won't get into, the previously mentioned assignment operator was implemented in a manner that did not play nice with the comma operator. It also didn't play nice with other assignment operators. While the operators worked fine in simple use-cases, power users could observe these two operators doing wrong or unexpected things when paired together.
    [tr]All of these *should* evaluate as 1.

    [tr]Comma and assignment operators can now be used together like intended and should do what someone familiar with them would expect them to do, even in complex cases.

                                   
    登录/注册后可看大图

  • Compound Assignment Operators Added
    [tr]One final nice-to-have was added to the mapping expressions - compound assignment operators. When altering a user-defined variable based on its current value, the variable name previously always had to be mentioned twice, once on either side of the assignment-operator. Here is an example that reduces the current value of a variable: $x = $x - 0.6
    [tr]So-called compound assignment operators are now provided to allow this previously verbose syntax to be much more succinct: $x -= 0.6
    [tr]This syntax can be used with all of the binary operators for which it makes sense: &|^+-*/%
2412-51 - Add ability to edit game-specific GFX settings from game properties tab[tr] by TryTwo
[tr]One thing that many users have been requesting for a very long time[tr] is a visual interface for editing per-game settings. While Dolphin has provided a single page with a few key settings, the majority of the settings had to be added via the text editor.
[tr]The game properties page had limited usefulness, with a lot of the settings available not being useful in the modern era.[tr]To address this, we added a built-in text UI that could access just about every feature. Unfortunately, it ended up only useful for advanced users using our wiki as reference.
[tr]While this change doesn't add everything[tr], now users can set most graphics settings directly in the game properties page. While this functionality already existed by using the text interface, the visual interface makes it easy to see what settings are force enabled, and allows users an easy way to set them without having to memorize the names of the settings.

                               
登录/注册后可看大图
[tr]Say hello to the new graphical interface for setting graphics settings.

[tr]Note that this feature should be considered a work in progress, and the current design may not reflect a more complete solution in the future.
2412-82 - AdvancedWidget: Replace FFV1 codec with Ut Video as Default[tr] by TryTwo
[tr]For those of you who do video dumping in Dolphin, you may have noticed that a lot of modern video editors didn't play nice with the lossless codec in Dolphin. That's because Dolphin used to default to the rather old FFV1[tr] video codec. For TASers or people just wanting extremely high quality footage of the games, it frequently got in their way.
[tr]Fortunately, an alternative was added a few years ago[tr] - the Ut Video codec. This codec is what OBS chose for their lossless recording, granting it extremely widespread compatibility. Despite requiring an INI edit to use in Dolphin, the codec's popularity has compelled us to make the switch. By default[tr] Dolphin's lossless frame dumping feature will now use the Ut Video codec for greater compatibility. For those that want to still use FFV1, you still can do that through changing the config file manually.
2412-147 - Fix Summoner: Goddess Reborn sound system crash during transitions[tr] by Charlese2
Summoner: A Goddess Reborn[tr] has been a problematic title in Dolphin since the very beginning. While there were reports that some builds work better than others, the game has never been stable. In fact, playing through it from beginning to end in Dolphin was an arduous experience that meant dealing with crashes and constantly swapping between different CPU clock values in different parts of the game to just for a chance[tr] to get to the next section.
[tr]And now, we finally know why. This game is just broken and you can even cause the same crashes on console!
[tr]Even here on console, if the user tries to return to the main menu during a transition, Summoner will hang.
[tr]Click to Play. File has audio.

[tr]To be completely fair, the game isn't nearly as bad on console[tr]. While we did find some consistent crashes that helped us track down this bug, playing through the game isn't nearly as arduous. Still, the very same bug that causes the game to occasionally[tr] crash on console is what is causing it to crash in Dolphin, which means there isn't a great chance of us fixing it through emulation changes.
Charlese2[tr] said enough was enough and decided to figure out what was going on with this mysterious crash. And within a few days, we had an answer. Summoner: A Goddess Reborn[tr] reinitializes its sound system buffers during transitions even if sounds are still being played.[tr] If there are still pointers in the sound list to sounds in the buffers when the buffers get cleared, the game crashes with a null pointer dereference.
[tr]This is a serious bug that should be affecting console at the same rate as Dolphin, but it doesn't. Our best guess is that the Audio Interface DMA interrupt[tr] timings are slightly different on console, which causes things to happen in a slightly different order most of the time. However, the bug is there - even in a perfect, cycle accurate emulator, Summoner would occasionally crash if it is not modified.
[tr]To address this, Charlese2[tr] dove into the game and decided to fix the bug themselves! A lengthy patch (that is enabled by default in the latest builds of Dolphin) cleans up the pending sound list during sound system reinitialization before continuing to the sound system initialization call. With this patch, even known crashes when playing on console are fixed.
[tr]Now that same scenario will no longer hang in Dolphin, and Summoner successfully reaches the main menu.
[tr]Click to Play. File has audio.

2412-305 - Track Time Played (Core and Qt)[tr] by aminoa
[tr]Tracking time played is something we almost take for granted these days. Whether you play on a Nintendo Switch, PlayStation, or Steam, all of these platforms track your playtime for all of their titles. It's just expected behavior now.
[tr]If you were wondering why this report was late, the answer lies in this image.
[tr]Dolphin however emulates the GameCube and Wii, consoles that came out long before this trend. Unlike modern systems, the GameCube didn't have a clue how many hours you've rolled around at the speed of sound, and the Wii would only show it on a day-by-day basis. But what if Dolphin could track your total play times?
[tr]And now it can! As of this change, Dolphin can now track the time played for all of its titles and display it in the game list.
[tr]You can even sort the game list by playtime!
[tr]Play time tracking is enabled by default, so all it takes to track your time played is a quick update to the latest Dolphin version! If you'd rather not, you can disable it by going to Config > Interface and unchecking Enable Time Tracking[tr]. You can also remove the time played column from the game list if you wish without impacting whether or not your play time is tracked.
[tr]Currently only our Qt graphical interface can display play time.
[tr]NOTE: Time played can only be tracked in 2412-305[tr] and newer.
2412-321 - TAS: Use Improved Wii Remote Data Format[tr] by Billiard
[tr]For our TASers that need to use Wii Remotes, this is a long overdue change. For a basic rundown, when a person makes a Tool-Assisted Speedrun (TAS), they're essentially creating a long string of controller inputs that, when played back, completes a game quickly or accomplishes some other impressive feat. These controller inputs have to be stored in some way so they can be played back later. Like most emulators, Dolphin has a custom file format for this, and it's called DTM[tr] (Dolphin TAS Movie). It's a relatively simple format: 256 bytes of metadata and settings, followed by all the controller inputs and nothing else.
[tr]Depending on how optimized you intend your TAS to be, you might use Dolphin's input recordings alongside slowdown, frame-by-frame, savestates, or even rely on scripts (using specialized TASing forks) that generate inputs through bruteforcing across hundreds of hours!

[tr]This video shows just what's possible with a Tool-Assisted Speedrun/Superplay. Can you figure out how they beat the entirety of Wind Waker (no barrier skip) only pausing twice the entire game?


                               
登录/注册后可看大图

[tr]Dolphin's DTM format was originally designed for GameCube controllers and works fairly well for them. For Wii Remotes, the format has been quite a bit more cumbersome. Wii Remotes are a nightmare for emulation on a level that no controller before them can match. The Bluetooth connectivity is annoying, you can swap attachments, it has an infrared receiver, a small amount of EEPROM, battery levels, and of course, its signature motion controls. In fact, a Wii Remote collects so much data that it can't be sent all at once! Games that support Wii Remotes have to tell them what reporting mode[tr] to use, with different reporting modes sending different data and using different levels of precision. And to make things even tricker, Nintendo decided to encrypt[tr] data from extension controllers. We don't know if this was to make things harder for third-party controller manufacturers or for some other reason, but we do know that it has made things harder both for TASers and Dolphin developers!
[tr]How do you bolt all of this into a format that was designed for GameCube controllers? Dolphin's solution was to store data in the same format a Wii Remote would send it, using whatever reporting mode the game specified. This did work, but came with a lot of consequences. At the start of a recording, you'd be locked into your Wii Remote configuration. You couldn't change attachments during a recording, and manually editing DTM files in a hex editor was almost impossible. The reason for this was that the game could change reporting modes throughout a playthrough, and if the wrong sort of data was provided at the wrong time, the game would refuse to accept it.
[tr]This is how hard DTM files with GameCube controller inputs are to read. Now imagine what it would be like to have encrypted data in the mix too!
[tr]But it didn't have to be this way. When Wii Remotes were added to netplay, they suffered from all of these problems (and more!) which made Wii netplay into a nightmare. But, eventually AdmiralCurtiss addressed a lot of these issues[tr] to make Wii Remote netplay slightly more tolerable.
[tr]The new system, rather than naively copying the Wii Remote data as-is, used an intermediary structure that can then be translated into the game-requested format on the fly. This elegant solution allows the input data to be manipulated without fear of breakage from the ever-changing game state. On top of significantly improving stability, it gave support for more games by allowing users to change attachments mid-session.
[tr]While it may not seem like it at first glance, a lot of what netplay does overlaps with "movie" support which is used for TASing. They both require absolute determinism, recording inputs, and playing back inputs. When looking for ways to improve things for TASers, Billiard[tr] realized that AdmiralCurtiss[tr]'s netplay improvements were never ported over to movies! He decided to replace the old way of storing Wii Remote data in DTM files with netplay's intermediary format, bringing many of the improvements over.
[tr]We're hoping that this new format makes creating optimized Wii TASes easier and more stable. On the Dolphin side of things, it was also a maintenance win. A bunch of ugly code related to reporting modes and extension data encryption became unnecessary and was removed. As per usual, if you've started a TAS on an older build of Dolphin, you're more-or-less stuck there. Not only is the new DTM format incompatible with the old one, any minor[tr] change to Dolphin could break the syncing of a TAS. When creating a new TAS, please ensure that the build of Dolphin you're using supports the feature set you need to accomplish your goals. This goes for whether you're using an official build of Dolphin or a scripting fork. And for the TASers out there doing crazy things in Dolphin, we're always looking forward to seeing what you do next.

dolphin-2503-ARM64.7z

14.1 MB, 下载次数: 4

dolphin-2503-x64.7z

16.37 MB, 下载次数: 11

90

主题

78

回帖

5181

积分

版主

积分
5181
 楼主| 发表于 3 天前 | 显示全部楼层
金手指下载正常


01.png 02.png

03.png 04.png

05.png 06.png

0

主题

1422

回帖

4703

积分

论坛元老

积分
4703
发表于 3 天前 | 显示全部楼层
感谢分享
回复

使用道具 举报

8

主题

285

回帖

3075

积分

论坛元老

积分
3075

最佳新人

发表于 3 天前 | 显示全部楼层
感谢分享!!!!
回复

使用道具 举报

0

主题

253

回帖

790

积分

高级会员

积分
790
发表于 3 天前 | 显示全部楼层
进来瞅瞅!
回复

使用道具 举报

26

主题

1422

回帖

4921

积分

论坛元老

积分
4921
QQ
发表于 3 天前 来自手机 | 显示全部楼层
感谢分享楼主

0

主题

261

回帖

1074

积分

金牌会员

积分
1074
发表于 前天 01:44 | 显示全部楼层
进来支持一下

0

主题

373

回帖

2761

积分

金牌会员

积分
2761
发表于 前天 01:57 | 显示全部楼层
看下新版海豚
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|肖琪模拟游戏站 ( 沪ICP备2023018581号-5|沪公网安备31011702888952号 )

GMT+8, 2025-3-14 16:49 , Processed in 0.056770 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表