Comments (7)
@Berserker66 let me know we never officially supported RA, but I think it is still worth looking into RetroArch compatibility for SM.
from archipelago.
It's a little more complicated than that. But the really simple part is: the old location and the new location from PR #340 are both in the ROM anyway, so that made no difference. (Edit: for deep technical reasons that I can explain if you like, the PR actually should help "non-working" versions of RA like 1.10.0 become "working, but with caveats"!)
Now, to address fully supporting RetroArch, which is not affected by the above change:
RetroArch is able to read the ROM if both of the following conditions are met:
- Using RetroArch <= 1.9.0 or RetroArch >= 1.10.1; AND,
- Using a bsnes-mercury core (such as bsnes-mercury-performance)
Thus RetroArch has sort of always been supported! I would like to write up some instructions to use it, or someone else can.
The dependency on bsnes-mercury isn't the greatest since it's somewhat awkward to manage cores in RetroArch. bsnes-mercury is also pretty finicky about enabling custom MSU music support for the players that want that. There are at least a few ways to go about removing the dependency on bsnes-mercury:
- In RA: Add support in cores other than bsnes-mercury, such as the RA snes9x-current core, for RA's SET_MEMORY_MAPS API. This enables ROM reads. It's a little bit scary to me because you just pass to RA a read/write buffer pointer with no lifetime specified and no notification when RA writes the buffer owned by the emulator core. jsd1982 was thinking about trying this. OR,
- In AP SM ROM: Copy ROM data to a known location in WRAM or SRAM, first ensuring that no one else wants to write to the chosen location. OR,
- In AP SM ROM: Add a command to the multiworld communication library which enables the ROM's code to accept a read request for a particular address from SNIClient, and read and return ROM data to the SNIClient.
from archipelago.
[MW] never officially supported RA
I suppose I should ask @Berserker66 - beyond some of the technical stuff I described in the above comment, is there any reason RetroArch support couldn't be made official?
from archipelago.
I concur with strotlog: SM_ROMNAME_START was never in RAM to start with. I missed that.
from archipelago.
@strotlog
It simply never worked and nobody ever reported it. RA cannot read ROM, only RAM.
But your PR has now made us aware of this.
from archipelago.
OK, neat.
Just to reiterate, RA can read ROM data when the user selects a RA core that implement RA's SET_MEMORY_MAPS API. bsnes-mercury is the only such SNES core that I'm aware of.
Archipelago does support SM in RetroArch today; the biggest limitation is documentation!
Maybe the perception of it not working comes from a previous bug: For a certain period of time (RA 1.92 thru 1.10.0), RA had a problem with the correctness of where it read from within the ROM, when a client requested an address in non-contiguous ROM address space. (99% of the SM ROM is mapped non-contiguously with the beginning of the ROM.) But I tracked that bug down and got it fixed with RA folks in RA 1.10.1.
from archipelago.
According to #365 this seems solved for. Thank you for your contributions, in knowledge and docs, @strotlog. I am closing this issue now.
from archipelago.
Related Issues (20)
- multiserver: Push message service for async multiworld HOT 1
- Bug: WebHost does not display proper default values HOT 1
- Core: Add custom sfx for local when sending or receiving items HOT 3
- Bug: SC2 Graphical settings aren't saving; Settings aren't inherited from the install HOT 1
- Bug: Starcraft 2 client fails to connect to local server without internet HOT 1
- Bug: Zork Grand Inquisitor progression bug HOT 4
- Bug: FactorioClient does not respect --connect flag HOT 6
- Allow Zooming of the Applications
- New Feature Request: Starcraft 2; Nova color selection in options page HOT 1
- Bug: A Hat in Time difficulty doc has discord links HOT 5
- (Celeste 64) "Key Not Found Exception" when trying to get past file selection screen HOT 3
- Bug: SC2 vanilla mission order sometimes allows playing missions with their prerequisites unlocked but not completed HOT 2
- Bug: Hollow Knight: Missing Logic: Require Focus before entering Black Egg Temple and fighting HK. HOT 2
- Bug: Non-deterministic generation when combining SMZ3 and The Legend of Zelda HOT 5
- Port for further architectures? HOT 2
- Bug: CollectionState.sweep_for_events() semantics may have been accidentally changed in #361 HOT 4
- Bug: Generation refreshes site permanently for Subnautica room HOT 1
- Bug: In Starcraft 2, loading a save or restarting a mission crashes the game HOT 5
- Bug: Can no longer create an empty Archipelago game player yaml file for spectating, ect. HOT 5
- Bug: LTTP crashes/room data corruption with allow_collect
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from archipelago.