Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Do you care about game preservation? Enough to consider doing something about it? (Don't worry, you probably won't need to get out of your chair.)
stopkillinggames.com
One irate man has taken it upon himself to arrange several avenues for holding large game studios accountable for an increasingly common practice: reaching into your hard drive and clawing back the game you bought a licence for.
If you own Ubisoft's The Crew (or rather, used to), you'll have the most impact, but for the rest of us we can maybe get a petition through to our respective governments. The Australian one just opened (closes May 20th), the EU one is still being processed so check back later, the UK one is open (closes October 16th), and the Canadian one is also still pending.
Additional context:
Link to video
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
MMOs. Even if you could emulate the network, for a growing number of them, the server software is lost media.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Works for me—but I believe the server was updated between your post and now.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
It's because Lua's goal was to be easy to embed from other languages, and while that's not unique to Lua, the network effect made it dominant. There are others which see some use, such as JavaScript, but there simply aren't many embeddable scripting languages which are good by modern standards.
I've made a list alternatives to be considered on the BizHawk issue tracker.
edit:
I think there would need to be a near-perfect language, clearly excelling over Lua in every way, and even then it's not guaranteed to overthrow it.
I could not disagree more, and I'm surprised to hear this from a Rust programmer who I'd assume would be more aware of language design.
Beginners aren't in the habit of properly indenting their code, which makes a missing end difficult to locate. if is not an expression and there's no ternary operator. Variables are global by default, and functions automatically capture locals in their closure, so avoiding side-effects is hard. The default is 1-indexing, which may be more intuitive for beginners, but in this context you'll be working with virtual memory which is 0-indexed, so that's one more facet you have to keep track of. Values have types, but not variables or parameters, so you don't get any compile-time warnings, and runtime errors may or may not be silent. There are no increment/decrement operators. nil is falsey but 0 is not. The length operator # behaves unintuitively with dict-like tables. The concatenation operator .. works with non-strings, but only sometimes. There's an OOP-like method call syntax, but the standard library doesn't use it, so third-party code may be your first encounter with it. Variables are mutable by default, including function parameters (which can't take <const>).
You are likely to run into many of these during your first few hours with Lua. Other "quirks", like silent discarding with multiple return values, are less likely to come up but could still be considered bad design. And the story is even worse for Lua ≤ 5.3.
When compared to a hobby language, I might agree, but Lua's documentation is by no means good. And since its standard library is so small, you'll have to use third-party code anyway (or write your own helpers).
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
What? Why involve us at all? libTAS already runs under WSL.
I'm told EmuHawk already runs under WSL too.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
This is probably just due to not running at full speed—enable View > Display FPS and see if the stuttering coincides with the framerate falling below 60 for a moment.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
SRAM is mentioned under that exact header. There's also a glossary entry for "New Game Plus", though the two weren't linked before I changed it just now.
This obviously differs by system, but it seems for the most part emulators use the same, trivial format. EmuHawk complicates this whenever there are multiple memory cards or linked consoles, since we concatenate them into one file. Our documentation is lacking here too.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Config > File Extensions...
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
How has no-one mentioned this Flash classic yet? The OG AG TD.
Some initial thoughts:
The game runs smoothly in Ruffle. (And I really hope lowering the graphics quality isn't optimal, because it looks remarkably good on max. on a modern machine.)
The official strategy guide is still up and serves as a good refresher for those of us who haven't played in a while.
On the subject of Armor Games, there's a domain-gated feature, the third skill. Have we figured out domain spoofing yet?
I'm imagining that a TAS would want to visit each 'battle' only once. In my RTA test, I got halfway to the quotas for the first few battles, so it's not too much of a stretch. Though I don't know whether the game will force you to backtrack at some point since I've never actually beaten it.
There doesn't seem to be a speedrunning community for this version. I saw a few runs of later releases on SRC, but the mechanics are probably too different to be applicable. And the optimal strategy for RTA may not be optimal for TAS anyway.
You get skill points by levelling up, and levels are just score milestones. It seems you can pass multiple milestones with a single 'battle'.
There are no restrictions on respec'ing; with one click you reset every skill and get all your points back.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Always good to see the limits of perf being pushed.
It was brought up on Discord earlier, but I've opened TASEmulators/BizHawk#3848 to discuss including your work in BizHawk.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
It's funny how you bumped this question just now, and there was a solution posted in the Discord yesterday.
Create a shortcut (.lnk) to EmuHawk, open its Properties window, and set "Run:" to "Maximized".
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
IMO playing the executable as audio is a better easter egg than the original "your mum" thing ever could be
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
while true do
if movie.mode() == "FINISHED" then movie.play_from_start(movie.filename()); end
emu.frameadvance();
end
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
CNR, all 3 cores implement registers. Do you have a rom loaded?
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Settings > Rotate, or Ctrl+Shift+F.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Just based on what you've said, memory.write_u16_le(a, memory.read_u16_le(a) + d).
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
local WINDOW = 100;
local concat_names = function(list)
local s = "";
local l = "";
for k, _ in pairs(list) do
l = l..k.." ";
if #l > 60 then
s = s..l.."\n";
l = "";
end
end
return s..l;
end;
local held = {};
local held_str = "";
while true do
for k, v in pairs(input.get()) do held[k] = v; end
if emu.framecount() % WINDOW == 0 then
held_str = concat_names(held);
held = {};
end
gui.text(0, 0, held_str, nil, "bottomleft");
emu.frameadvance();
end
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
You would also need to block or at least detect when a frame advance or savestate is triggered manually i.e. not by the tool. Also I think you may be underestimating just how much TAStudio does. As an experiment, try writing an alternative piano roll for EmuHawk in Lua/pseudocode and count how many distinct API functions you need (excl. GUI). I got to 10 before giving up.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Please try a dev build. The latest one for Windows is here.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
The existence of separate pages Wiki: EmulatorResources/BugReports and Wiki: EmulatorResources/Development screams "infobox" to me. I'm not sure it's worth adding a module to the site just to group a few links together, though if it were MediaWiki I'd have no problem quickly making an infobox template.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
local CUTOFF = 40;
memory.usememorydomain("WRAM");
local LENGTH = 0x10000;
local mem_prev = memory.read_bytes_as_array(0, LENGTH);
local matching = {};
for addr = 0, LENGTH - 1 do table.insert(matching, addr); end
while true do
emu.frameadvance();
local mem = memory.read_bytes_as_array(0, LENGTH);
local filtered = {};
if emu.framecount() < CUTOFF then
for _, addr in pairs(matching) do
if mem[addr] == mem_prev[addr] then table.insert(filtered, addr); end
end
else
for _, addr in pairs(matching) do
if mem[addr] ~= mem_prev[addr] then table.insert(filtered, addr); end
end
-- probably want to write to file at this point
end
matching = filtered;
mem_prev = mem;
end
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
Not directly, but you can copy SaveRAM if the game has that.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Joined: 8/30/2020
Posts: 79
Location: Sydney, Australia
I should let everyone know that I've started on a rewrite of Wiki: BizHawk. I only intend to keep a couple of the subpages, but I'm not clear how those work with the move to Wiki: LegacyPages, so I'd appreciate it if someone could handle the backup for me. (Also can the page title be fixed or still no? edit: It seems a page .../BizHawk will be titled "Biz Hawk" so I'll take that as a no. "Lib TAS" is also wrong.)
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope
Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.