[00:00] *** ted has quit IRC (Read error: Operation timed out) [00:02] *** balrog has joined #jsmess [00:02] OK, let's do this. [00:02] LET'S DO THISSSSSSSSSSSSSSSSSSSSSSSSS [00:09] YEAH!!! [00:09] wait, what are we doing? [00:12] <("<) (>"<) (>")> [00:14] ᕦ(ò_óˇ)ᕤ [00:20] *** Vito` has quit IRC (Ping timeout: 260 seconds) [00:21] *** davidar has quit IRC (Ping timeout: 260 seconds) [00:21] *** davidar has joined #jsmess [00:23] *** arkiver has quit IRC (Ping timeout: 615 seconds) [00:25] *** arkiver has joined #jsmess [00:28] I'm going to write a combiner for the multi-sided items in C64. [00:28] It's going to collapse a bunch and dark a bunch obviously [00:28] But let's get Side A-Side B on the fucking road [00:29] Also, I have a quest for Sgeo_ when he is ready [00:29] The Quest of All Quests [00:29] A Quest so important, money could be involved for him [00:29] But first... combining [00:33] root@teamarchive2:/2/C64# bash COMBINORS [00:33] Paste in the Side A item. [00:33] https://archive.org/details/Last_Ninja_The_1987_System_3_Side_A [00:33] Last_Ninja_The_1987_System_3_Side_A it is. [00:33] Is there a side B item? [00:33] There is, there is. [00:33] I will therefore shove Last_Ninja_The_1987_System_3_Side_B.d64 from Last_Ninja_The_1987_System_3_Side_B into Last_Ninja_The_1987_System_3_Side_A [00:46] o.O [00:48] ia search emulator:vice-resid identifier:*Side_A --itemlist | wc -l [00:48] 1831 [00:48] That's right, it's 1831 items [00:58] It's running! [00:58] So it's doing just A-B items now. [00:59] (Easier to write the code to do the C-F ones as a separate run, including regenerating fliplist.) [01:00] https://archive.org/details/softwarelibrary_c64_games?and%5B%5D=emulator%3Avice-resid+%22NOW+COMBINED%22&sin= [01:01] *** ted has joined #jsmess [01:13] Oh, so [01:13] The guy who I said would be furious about the C64 emulation did his next salvo [01:13] He tattled about us to the current owners of Epyx. 90 generally emulated items now off the viewable emulations on the Archive [01:16] I wonder how much he actually makes per year on that [01:17] Not much, I bet [01:36] Some of those side Bs actually run by themselves [01:41] Gotta revisit frankly [01:41] I will take the loss of second-side boots over the amount of disks that wanted a second-side and didn't boot at all to them [01:47] *** SketchCow sets mode: +oooo arkiver balrog godane Lord_Nigh [01:47] *** SketchCow sets mode: +oo Sgeo_ ted [01:50] Another 299 gone. :) [02:02] OK, sides C, D, E, F all plunked into their A counterparts. [02:05] *** Vito` has joined #jsmess [02:10] B is obviously taking some time., [02:10] Also, obviously I need to then splash disks into each other as well. [02:12] So, Sgeo_ [02:13] I consider your work on Vice basically done. Like, maybe you can convince yourself to shave the yak further, but this thing's a clear and great done thing. [02:19] :) thank you [02:22] I offer the next quest [02:25] I don't know how much you know this, but the structure of MAME is "wrong" for Emularity. [02:30] I saw comments in Emularity that seemed like they were referencing something like that, I don't recall the precise details [02:32] So, MAME works. Obviously Emularity-Version-MAME works. [02:32] Like, it's not a "doesn't work vs. work" thing [02:33] But in the conversion from MAME's code to JS/WASM, there's a set of conditions in place that, while they work, absolutely skyrocket the CPU usage, unnecessarily. [02:34] And in almost every case, causes notable clicking and shuddering if the machine isn't up to the task, or even if it is. [02:34] DOSBOX-js, however, does it "right". It only clicks and shudders if the machine is truly not fast enough [02:34] (SAE/Amiga does something even crazier, it actually doppler-effects.) [02:35] And PCE-js works "right" [02:35] But MAME is, as you know, nearly 1,700 emulators to the others, i.e. 99% of our emulation [02:35] So what is messed there, the vast majority are messed. [02:36] We've done everything we can to optimize. We've had massive improvements on the compiler. We've had massive speedups on javascript and WASM engines in browsers. And we've even come up with a weird custom sound hook. [02:36] But what really needs to happen [02:36] .... is a patch set. [02:37] One that shifts the flow of MAME for each new version and shoves it into a different flow that works with Emscripten. [02:37] bai did a bit of work in this direction for proof. DFJustin has some of the magic in his head [02:38] We even got MooglyGuy and Aaron Giles to at least describe the problem before they both had to withdraw from the pure blasphemy of it [02:38] This is important enough that I'm happy to see about you getting some sort of honorarium for taking it on [02:38] We can dump a pile of docs on you. [02:39] yeah I did a write-up of the problem, I can dig it up if you can't find it [02:39] You showed the skill with VICEjs to make this happen. Ideally, like the VICE approach, it's a series of minimal patches to change the program flow and then you or others in the future noting when the patches fall out of sync. [02:39] But basically: Fork MAME [02:39] There's even a chance they'll ingest it into the flow, as part of the compile option in the future. [02:40] And maintain it themselves. [02:42] I'd like to see the write-ups and documents [02:43] Yeah, let's find them [02:44] https://docs.google.com/document/d/1FHmn1kO3PGYYCRJejZsZMFk_BxWer_pOaTUANRFroM8 [02:45] That's them [02:45] the long and short of it is that MAME uses the typical native busy-loop which just cranks through at a certain rate and advances the emulator by that many timeslices each loop [02:45] whereas emscripten breaks it up into asynchronous callbacks [02:45] Right. As I understand this, part of the problem is it uses the video routines to do EVERYTHING [02:45] and there's some subtle difference in the timing when you do it that way [02:45] So video drives timing instead of the other way around [02:45] yeah [02:46] I consider a miniscule sacrifice in timing accuracy to be a perfectly acceptable thing in service of this working [02:46] Because right now it murders CPUs and it doesn't have to [02:48] Hmm. VICEjs uses emterpretify, but I got lucky that VICE doesn't need to do sync calls (including sleep) during the main loop, only in the menus [02:48] Let me stress, if this was a super easy fix, it'd have been done [02:48] well, timing inaccuracies are part of why we get the stuttering, but yeah, fixing the maxed-cpu part would give us a lot ore leeway with that [02:48] That's the part [02:48] yeah mame uses usleep heavily for ensuring timing, I believe [02:49] there is one other option which has become more of a possibility since this article was written, which is to run MAME entirely in a worker [02:49] then the fact that it's doing a cpu-maxing busy loop is less of a problem, albeit still a bit rude [02:50] Problem is that we lose the ability to make it run less hot everywhere [02:50] Phones can run mame in the browser if we get that CPU usage down [02:51] *** SketchCow sets mode: +o Vito` [02:51] VICE Disk consolidation is now down to the M's. [03:35] *** azakai_ has joined #jsmess [06:18] *** hook54321 has joined #jsmess [07:54] *** gamingrob has quit IRC (Read error: Connection reset by peer) [07:55] *** gamingrob has joined #jsmess [09:40] *** gamingrob has quit IRC (Ping timeout: 260 seconds) [09:40] *** gamingrob has joined #jsmess [09:43] *** Vito` has quit IRC (Ping timeout: 260 seconds) [09:43] *** Vito` has joined #jsmess [09:47] *** davidar has quit IRC (Ping timeout: 260 seconds) [09:47] *** davidar has joined #jsmess [09:50] *** Vito` has quit IRC (Read error: Connection reset by peer) [09:50] *** Vito` has joined #jsmess [09:50] *** Vito` has quit IRC (Read error: Connection timed out) [09:50] *** Vito` has joined #jsmess [09:56] *** gamingrob has quit IRC (Ping timeout: 260 seconds) [09:56] *** gamingrob has joined #jsmess [09:59] *** balrog has quit IRC (Read error: Operation timed out) [09:59] *** pfalleno1 has quit IRC (Read error: Operation timed out) [09:59] *** balrog has joined #jsmess [10:00] *** Sgeo has joined #jsmess [10:00] *** zino has quit IRC (Read error: Operation timed out) [10:00] *** Sgeo_ has quit IRC (Read error: Operation timed out) [10:07] *** azakai_ has quit IRC (Read error: Operation timed out) [10:14] *** azakai has joined #jsmess [10:25] *** zino has joined #jsmess [10:29] *** gamingrob has quit IRC (Ping timeout: 260 seconds) [10:29] *** gamingrob has joined #jsmess [10:37] *** gamingrob has quit IRC (Ping timeout: 260 seconds) [10:37] *** gamingrob has joined #jsmess [16:05] Sgeo: What do ya think! [16:14] I'll start reading through the code soon, but I'm not at all sure about being able to fix things. [16:14] AFK [16:23] *** azakai has quit IRC (Ping timeout: 255 seconds) [16:57] I have faith [16:57] HUGE faith [16:57] You've got a braintrust here that can answer any question [18:18] what's for dinner? :) [18:31] *** ted has quit IRC (Remote host closed the connection) [18:35] *** ted has joined #jsmess [19:37] Swedish Meatballs [20:02] I'm now smashing all _Disk_2_of items into _Disk_1_of items [20:02] This will drop another 800+ items into multi-disk versions [21:30] bai: You think that's notch's problem, he's being misrepresented? [21:32] SketchCow: I think there was definitely some aspect of that, yes [21:33] I think he sometimes does a poor job of expressing complex ideas and it's easy to misinterpret them with the worst possible explanation [21:37] I dunno if I can really clarify too much without triggering a whole thing, but one case that comes to mind was when he tweeted something about not believing affirmative action was a good solution and everyone took it to mean he's a white suppremacist [21:38] when you reach that level of celebrity, people are just waiting in the wings to jump on everything you say and spin it in the worst possible light [21:39] I know I've said plenty of dumbass shit over the past 20 years on irc that could be used as ammo to paint me in a poor light [21:39] notch is, objectively, a terrible person. [21:39] irony and sarcasm has a way of getting completely lost when people are motivated to interpret things in a certain light [21:40] And now he's a terrible person with a billion dollars. [21:40] I seriously don't think he needs a wingman. [21:41] And the IRC stuff is awesomeeeeee [21:41] Speaking of terrible people [21:41] I've begun turning on Amiga stuff again [21:43] it's not so much that I'm wingmanning him, it's that watching that whole thing as it developped reinforced my own insecurities about what happens when you find success and unwittingly become a public figure whose every words are picked apart to find meaning which probably wasn't really your intent [21:43] I think you can find better nightmares than his nightmare. [21:43] He's a really terrible guy. [21:44] I have lots of other people forced into a spotlight where it destroyed them or ruined them, and I have much more sympathy. [21:46] well, you're probably more familiar with the feeling than I, given your own somewhat controversial semi-celebrity status :D [21:47] So, I blocked notch some time ago (feels good, man) so I haven't checked on him lately [21:47] But unless he's become the dalai lama [21:48] there's a certain dgaf-about-the-haters attitude that you have to adopt, and I think he took the wrong tact of trying to engage and clarify which as we all know only makes things worse [21:48] https://twitter.com/notch/status/936295448184348672 [21:49] https://pbs.twimg.com/media/DDvMH9mU0AEUN66.jpg:large [21:51] Anyway, he's a garbage human being but these IRC logs are just nerds testing a program [21:51] And talking about what's hard and easy to put in [21:51] it's a complicated topic and he's certainly a shitidiot about expressing what I think he actually means [21:52] You give him so much credit [21:52] This is an adorable flaw! [21:53] But I am fine with this flaw because you're generous to work on an insane programming project with solid ramifications but thanksless years of labor. [21:56] Taking a short nap, then recording a couple podcasts which I promise will not be about notch [21:56] :D [22:07] in other news, I thought there was a bug in the new emscripten version fucking over mame but after going back and trying incrementally newer versions now it works again [22:07] so hooray I guess [22:10] bgfx isn't working until https://github.com/kripken/emscripten/pull/7506 goes in but I don't think we're running that publicly anyway