Fork of Archipelago Multi-Game Randomizer and Server that runs on https://ap.hollymcfarland.com
Go to file
zig-for 3bf86cd8f0
LADX: Fix getting old items over and over again in Bizhawk (#2011)
There was a bug that randomly after opening and closing the menu, some players on Bizhawk would get old items again. Tracking this down took multiple hours over the course of several weeks. The root cause turned out to be reading from the System Bus domain while an DMA copy was happening. Doing so is undefined behavior on GBC (though I'm sure some game relies on it). On Gambatte, you end up reading some garbage byte no matter what the read is (unsure what the providence of the byte is - some garbage, some register, the actual DMA data, who knows?). Normally, this isn't an issue, as Bizhawk callbacks only happen during vblank/halt, which is generally a state where we have valid WRAM to read from. However - a setting is being passed around the community for Bizhawk that changes the frame counter to go from "only when Vblank happens" to "whenever some number of audio samples have happened" which causes the bizhawk callbacks to happen....nearly whenever. Including during a DMA. You can tell this is happening if you print the `PC` register when reading memory - if it matches `FFXX` then you are executing in a routine in HRAM and likely doing a DMA.

Additionally, the check items counter specifically is in WRAM Bank 1 which could be swapped out of - will have to keep an eye on this - generally LADX lives in Bank 1, but there are a few things that use the other banks (swap space for some objects??). This could be a problem on any platform - if we get more reports of bad items gets, that's probably why.

Also, fixes some logging that was never getting reenabled.
2023-07-27 16:08:14 +02:00
.github CI: Update workflows to use Python 3.11 (#1949) 2023-07-23 20:15:13 -05:00
WebHostLib Factorio: fix multitracker ID misalignment 2023-07-21 19:11:05 +02:00
data LADX: Fix getting old items over and over again in Bizhawk (#2011) 2023-07-27 16:08:14 +02:00
docs docs: mention all item classifications (#1961) 2023-07-22 09:56:00 -05:00
test Stardew Valley: 4.x.x - The Ginger Update (#1931) 2023-07-19 20:26:38 +02:00
typings/kivy Zillion: map tracker in client (#1136) 2022-10-27 02:30:22 -07:00
worlds The Witness: Make the path behind Keep Pressure Plates 2 logical in Vanilla and Normal (#2013) 2023-07-25 17:58:28 +02:00
worlds_disabled OriBF: Move Ori and the Blind Forest to `worlds_disabled`. (#1906) 2023-06-29 13:36:48 -05:00
.gitignore Core: Add settings API ("auto settings") for host.yaml (#1871) 2023-07-05 22:39:35 +02:00
AdventureClient.py CI: add a workflow to show flake8/mypy violations in modified files of a PR (#1513) 2023-05-20 14:40:51 +02:00
BaseClasses.py Core: Region connection helpers (#1923) 2023-07-09 17:52:20 +02:00
ChecksFinderClient.py ChecksFinder: Linux support via wine (#795) 2022-07-19 07:44:04 +02:00
CommonClient.py lufia2ac: coop support + update AP version number to 0.4.2 (#1868) 2023-06-29 08:06:58 -05:00
FF1Client.py Docs: Revise all docs mentioning Lua in EmuHawk (which are in English), and other misc. corrections (#1782) 2023-06-26 08:53:44 +02:00
FactorioClient.py Factorio: Client in folder, TextClient: always available (#1829) 2023-06-25 02:31:25 +02:00
Fill.py Fill: fix cleanup-after-swapping performance (#2016) 2023-07-23 17:57:33 +02:00
Generate.py Generate: Change yaml is destroyed to yaml is invalid (#1954) 2023-07-21 20:13:50 -05:00
KH2Client.py KH2: AntipointReset (#1815) 2023-05-18 15:28:35 +02:00
LICENSE update Copyright 2022-02-17 19:03:11 -08:00
Launcher.py Core: Add settings API ("auto settings") for host.yaml (#1871) 2023-07-05 22:39:35 +02:00
LinksAwakeningClient.py LADX: Fix getting old items over and over again in Bizhawk (#2011) 2023-07-27 16:08:14 +02:00
LttPAdjuster.py LttP: fix patching crash if old always_apply adjuster settings were applied 2023-05-25 14:08:56 +02:00
MMBN3Client.py Mega Man Battle Network 3: Implement New Game (#1198) 2023-06-29 13:36:01 -05:00
Main.py WebHost: Fix as_dict attribute error (#1977) 2023-07-15 22:52:52 +02:00
MinecraftClient.py Core: Add settings API ("auto settings") for host.yaml (#1871) 2023-07-05 22:39:35 +02:00
ModuleUpdate.py Core: skip ModuleUpdate in subprocess 2023-05-18 15:29:17 +02:00
MultiServer.py MultiServer: fix loading of default hint_cost (#1964) 2023-07-11 20:38:09 +02:00
NetUtils.py MultiServer: Allow games with no locations, add checks to pure python implementation. (#1944) 2023-07-05 10:35:03 +02:00
OoTAdjuster.py Main: add __all__ and change wrong imports (#1824) 2023-05-20 19:21:39 +02:00
OoTClient.py Core: Add settings API ("auto settings") for host.yaml (#1871) 2023-07-05 22:39:35 +02:00
Options.py Core: Add display name for `item_links` Option. (#1952) 2023-07-21 19:31:23 -05:00
Patch.py Core: SNI Client Refactor (#1083) 2022-10-25 19:54:43 +02:00
PokemonClient.py Pokémon Red and Blue: Version 4 update (#1963) 2023-07-24 00:46:54 +02:00
README.md Terraria: Implement New Game (#1405) 2023-07-18 21:37:26 -05:00
SNIClient.py SoE/SNIClient: auto launch SNI before browser when SNIClient patched (#1861) 2023-06-18 11:27:08 +02:00
Starcraft2Client.py SC2: Python 3.11 compatibility (#1821) 2023-06-12 07:41:53 +02:00
UndertaleClient.py Undertale: Doc updates and client bug fixes. (#1996) 2023-07-22 00:38:21 -05:00
Utils.py Core: Add settings API ("auto settings") for host.yaml (#1871) 2023-07-05 22:39:35 +02:00
WargrooveClient.py Wargroove: Fixed Wargroove Client not removing communication files (#1492) 2023-03-03 18:24:09 +01:00
WebHost.py WebHost: Fix docs generation from a .apworld (#1862) 2023-07-05 23:36:46 +02:00
Zelda1Client.py Docs: Revise all docs mentioning Lua in EmuHawk (which are in English), and other misc. corrections (#1782) 2023-06-26 08:53:44 +02:00
ZillionClient.py ZillionClient: fix manual disconnect (#1266) 2023-01-07 10:27:43 +01:00
_speedups.pyx MultiServer: Allow games with no locations, add checks to pure python implementation. (#1944) 2023-07-05 10:35:03 +02:00
_speedups.pyxbld MultiServer: speed up location commands (#1926) 2023-07-04 19:12:43 +02:00
inno_setup.iss Setup: allow user to auto launch the launcher, so they can conveniently launch things when the setup is done. (#2020) 2023-07-24 00:15:47 +02:00
kvui.py [kivy] change the sizing for macOS (#1732) 2023-04-19 23:16:13 +02:00
meta.yaml meta.yaml: update progression balancing (#1283) 2022-12-05 22:26:44 +01:00
playerSettings.yaml update LTTP player template to add all universal AP options (#1372) 2023-01-07 10:09:33 +01:00
pytest.ini use pytest for github unittests 2020-04-29 18:44:03 +02:00
requirements.txt Core: update modules 2023-07-24 02:31:17 +02:00
settings.py Settings: implement saving of dict and sequence, add graceful crashing (#1981) 2023-07-18 20:59:52 +02:00
setup.py Setup: package the entire websockets module 2023-07-24 00:54:14 +02:00

README.md

Archipelago Discord Shield | Install

Archipelago provides a generic framework for developing multiworld capability for game randomizers. In all cases, presently, Archipelago is also the randomizer itself.

Currently, the following games are supported:

  • The Legend of Zelda: A Link to the Past
  • Factorio
  • Minecraft
  • Subnautica
  • Slay the Spire
  • Risk of Rain 2
  • The Legend of Zelda: Ocarina of Time
  • Timespinner
  • Super Metroid
  • Secret of Evermore
  • Final Fantasy
  • Rogue Legacy
  • VVVVVV
  • Raft
  • Super Mario 64
  • Meritous
  • Super Metroid/Link to the Past combo randomizer (SMZ3)
  • ChecksFinder
  • ArchipIDLE
  • Hollow Knight
  • The Witness
  • Sonic Adventure 2: Battle
  • Starcraft 2: Wings of Liberty
  • Donkey Kong Country 3
  • Dark Souls 3
  • Super Mario World
  • Pokémon Red and Blue
  • Hylics 2
  • Overcooked! 2
  • Zillion
  • Lufia II Ancient Cave
  • Blasphemous
  • Wargroove
  • Stardew Valley
  • The Legend of Zelda
  • The Messenger
  • Kingdom Hearts 2
  • The Legend of Zelda: Link's Awakening DX
  • Clique
  • Adventure
  • DLC Quest
  • Noita
  • Undertale
  • Bumper Stickers
  • Mega Man Battle Network 3: Blue Version
  • Muse Dash
  • DOOM 1993
  • Terraria

For setup and instructions check out our tutorials page. Downloads can be found at Releases, including compiled windows binaries.

History

Archipelago is built upon a strong legacy of brilliant hobbyists. We want to honor that legacy by showing it here. The repositories which Archipelago is built upon, inspired by, or otherwise owes its gratitude to are:

We recognize that there is a strong community of incredibly smart people that have come before us and helped pave the path. Just because one person's name may be in a repository title does not mean that only one person made that project happen. We can't hope to perfectly cover every single contribution that lead up to Archipelago but we hope to honor them fairly.

Path to the Archipelago

Archipelago was directly forked from bonta0's multiworld_31 branch of ALttPEntranceRandomizer (this project has a long legacy of its own, please check it out linked above) on January 12, 2020. The repository was then named to MultiWorld-Utilities to better encompass its intended function. As Archipelago matured, then known as "Berserker's MultiWorld" by some, we found it necessary to transform our repository into a root level repository (as opposed to a 'forked repo') and change the name (which came later) to better reflect our project.

Running Archipelago

For most people all you need to do is head over to the releases page then download and run the appropriate installer. The installers function on Windows only.

If you are running Archipelago from a non-Windows system then the likely scenario is that you are comfortable running source code directly. Please see our doc on running Archipelago from source.

This project makes use of multiple other projects. We wouldn't be here without these other repositories and the contributions of their developers, past and present.

Contributing

For contribution guidelines, please see our Contributing doc.

FAQ

For Frequently asked questions, please see the website's FAQ Page.

Code of Conduct

Please refer to our code of conduct.