[00:01] *** db48x has joined #jsmess [00:12] *** db48x has quit IRC (hub.se ny.us.hub) [00:12] *** devesine has quit IRC (hub.se ny.us.hub) [00:12] *** mta has quit IRC (hub.se ny.us.hub) [00:12] *** bai has quit IRC (hub.se ny.us.hub) [00:12] *** Lord_Nigh has quit IRC (hub.se ny.us.hub) [00:12] *** bwn has quit IRC (hub.se ny.us.hub) [00:12] *** jvilk_ has quit IRC (hub.se ny.us.hub) [00:12] *** arkiver has quit IRC (hub.se ny.us.hub) [00:18] *** db48x has joined #jsmess [00:18] *** Lord_Nigh has joined #jsmess [00:18] *** mta has joined #jsmess [00:18] *** devesine has joined #jsmess [00:18] *** bwn has joined #jsmess [00:18] *** bai has joined #jsmess [00:18] *** jvilk_ has joined #jsmess [00:18] *** arkiver has joined #jsmess [00:18] *** hub.efnet.us sets mode: +oooo devesine bai jvilk_ arkiver [00:22] DFJustin: So, 0.180 from 0.177? [00:22] Also, we're so likely missing arcade games. [00:26] only issue I can think of offhand is the game boy sound has gotten worse [00:46] SketchCow: haha is that tweet in reply to the fb comment? [00:46] or intended for someone else :D [00:47] it was definitely intended as a backhanded compliment. "this other garbage is beneath us. do with it what you will." [01:28] bai: Which tweet [01:28] I got a lot of tweets in the air right now, pal [01:28] Also, wanna compile a mac emulator with me [01:29] about parking in a handicapped spot and leaving your wife [01:29] Oh no [01:29] That actually happened [01:29] it didn't show as a reply to anything but the only tweet I made in the past day was "praising" facebook for letting us open source the parts of the company they weren't hoarding for themselves [01:30] oh haha ok [01:30] At the 24 hour deli down the road [01:30] it's raining and the handicapped spots are nearer to the door [01:30] So of course trickery [01:31] hey, rain is like a handicap for all of us, right? [01:32] Yeah [01:32] https://github.com/marciot/retroweb-pcejs-jsdf [01:32] haaeeeelp [01:32] His instructions don't work [01:32] Which seems just because his definition of emscripten is different than ours [01:33] in what way don't they work? compiler barfs? [01:34] ./emsdk update [01:34] ./emsdk install latest [01:34] ./emsdk activate latest [01:34] source ./emsdk_env.sh [01:34] OK, so we don't do that, and I don't think anyone does. [01:34] oh, I started using that method recently [01:35] So this works? I could call it, I guess [01:35] basically it just downloads and compiles the specified version and then sets upt he environment variables for you [01:35] you can tell it to install "latest", "incoming", or a specific version [01:35] Will this blow up jsmame? [01:35] Or it shouldn't [01:35] It shouldn't, I would thinkl [01:35] no I used that process last time I built jsmame [01:35] it all just works [01:36] OK, Where do I get emdsk [01:36] https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html [01:36] jesus, there's even an installer for this stuff now? [01:36] a web installer, no less [01:37] anyway, you want this one https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz [01:37] does it install it into a web page and then you have to reinstall it if you close the tab [01:37] haha [01:37] ^ [01:39] Installing [01:39] I'll do the build [01:39] Then we'll see what explodes [01:39] (Goal is to make it work in emularity) [01:39] Of course [01:40] "Exposed to JavaScript the ability to send messages to the emulator via *_set_msg to allow for on-the-fly disk insertion." [01:40] Is interesting [01:40] nice [01:41] Mostly, I want to see what happens as we go into this, because frankly, if we make it that hypercard stacks work, it blows up the world [01:42] By the way, I'm in SF from the 11th to the 20th [01:46] hypercard on the web....billion dollar idea! [01:47] we've come full circle :D [01:50] but yeah, cool re: sf, we'll grab some food or what have you [01:58] Yeah, and we have nothing local to drag you into [01:58] I love this fucking graffitti VR thing, by the way [01:58] I know it's not released but I love they got a top notch guy to do demos [01:58] And it's a killer VR example app [02:00] Also, the emscripten build time is .... notably large [02:00] But that said, the fact it's doing ALL the work for me works out nicely. [02:01] magic takes time [02:16] yeah, the graffiti and other artistic stuff is one of the more compelling uses for VR, people can just jump in and start spraying and they get it [02:16] even just watching other people is interesting, and it makes an art form that's always been sort of clandestine and temporary into something that can be shared with anyone in the world [02:16] It also shows techniques [02:19] yeah, that's definitely one I'm buying once they release it [03:32] Emscripten built! pce.js compiled! [03:32] Now, let's blow that shit up [03:33] ack, it built a .mem [03:36] does their working version use one? [03:37] No, it's a default in Emscripten now [03:37] I have to turn it off [03:37] I did an O3 build and here we are [03:39] Ok, better. [03:39] Now, let's add the emulator [03:40] 264K pce-macplus.js.gz [03:40] * SketchCow puts on glasses [03:40] :D [03:41] Now, let's play .JSON hell [03:42] { "name": "PCE Macplus Emulator", "js_filename": "pce-macplus.js.gz", "bios_filenames": [""], "peripherals": [""], "native_resolution": [560,384], "extra_args": [""], "driver": "" [03:42] } [03:47] Going to do a Mac 512k first [03:50] emularity_bios_v1: [03:50] uploading pce-mac-128k.zip: [################################] 1/1 - 00:00:00 [03:50] uploading pce-mac-512k.zip: [################################] 1/1 - 00:00:00 [03:50] uploading pce-mac-classic.zip: [################################] 1/1 - 00:00:00 [03:50] uploading pce-mac-plus-3.zip: [################################] 1/1 - 00:00:00 [03:50] uploading pce-mac-se.zip: [################################] 1/1 - 00:00:00 [03:50] 48K pce-mac-128k.zip [03:50] 48K pce-mac-512k.zip [03:50] 428K pce-mac-classic.zip [03:50] 92K pce-mac-plus-3.zip [03:50] 176K pce-mac-se.zip [03:51] Also tiny [03:52] next, let's ruin lives [03:57] https://archive.org/details/macexploderonimpact [03:57] The fact it loaded ANYTHING [03:58] (Forgot to do a sed, fixing.) [04:04] ahhh, annoying [04:04] I have to wait for a derive [04:07] Well, as predicted, https://archive.org/details/macexploderonimpact explodes [04:15] oh ho https://jamesfriend.com.au/working-implementation-sdlcreatergbsurfacefrom-emscripten [04:15] does your version of library_sdl.js's SDL_CreateRGBSurfaceFrom function look like that? [04:16] that would be in...let's see... [04:16] em-sdk/emscripten/uhh....I guess I'll have to spin up a vm for this [04:16] So, one moment. [04:16] In the build instructions, he has: [04:17] sed pce-macplus.js -i -e 's/function _SDL_CreateRGBSurfaceFrom/function _SDL_CreateRGBSurfaceFrom_disabled/' [04:17] ah interesting [04:17] Why is SDL_CreateRGBSurfaceFrom being disabled? [04:17] The SDL_CreateRGBSurfaceFrom that ships with Emscripten only supports a depth of 32. James Friend patched this routine to support a depth of 8 bits, required by PCE, but his repository did so through a modified version of the Emscripten toolchain which wasn't kept up to date. [04:17] Instead of doing that, I rename the function after compiling the JavaScript files (you could also manually delete the entire function to save space) and then provide the patch elsewhere (namely, in "emulators/emscripten-interface.js" from retroweb-vintage-computer-museum). [04:17] Oh I see [04:17] MOTHERFFFF [04:17] I wonder if there's any specific reason he never contributed it back [04:18] James quit [04:18] the project? [04:18] One moment, I'm on a hunt for SDL_CreateRGBSurfaceFrom [04:18] found it. [04:18] So.... [04:19] Can I cat this onto the back-ass of the .js and have it just work [04:19] https://github.com/marciot/retroweb-vintage-computer-museum/blob/3818c45e63e1c13a7c6e396a6f9471fac385323d/webfiles/emulators/emscripten-interface.js [04:19] (It's at the end there [04:19] hmmm no [04:19] you'll have to modify your emscripten build [04:19] and re-link [04:21] I need help with that. One moment. [04:21] yeah, I just fired up the vm and am looking for the path to that file you need to modify [04:22] emsdk_portable/emscripten/current/src/library_sdl.js [04:24] root@teamarchive0:/0/RETROMAC# cd emsdk_portable/emscripten/current/src/ [04:24] bash: cd: emsdk_portable/emscripten/current/src/: No such file or directory [04:25] root@teamarchive0:/0/RETROMAC# find . -name library_sdl.js [04:25] ./emsdk_portable/emscripten/master/src/library_sdl.js [04:25] oh, master, duh [04:25] I built with incoming so I guessed [04:25] So, I don't see it in there [04:26] (Found it) [04:26] it seems to be implemented in incoming, at least.... [04:27] So wait [04:27] oh, it's the depth !== 32 part, right [04:27] cp ./emsdk_portable/emscripten/master/src/library_sdl.js ./emsdk_portable/emscripten/master/src/library_sdl.js.bak [04:27] Now, nobody will die [04:28] it's hard to say what this will do because this article about what to replace was written in 2013, and the current instructions say "just disable it" [04:28] but in theory you swap out that entire function with the function in the blog [04:29] but I would say we may be barking up the wrong tree if the instructions saying to disable it are newer than the instructions saying to yolocode the fuck out of emscripten [04:29] Well, nothing's dead yet [04:29] Let me go look at emscripten [04:31] OK [04:31] I think for this purpose, modify library_sdj.js [04:31] It helps to know who's involved. [04:31] Hampa Hug makes PCE emulator, fun [04:31] James Friend took PCE Emulator and made PCE.js [04:32] James gets bored, wanders off [04:32] Has a life, the turd [04:32] Marcio takes PCE.js and makes Retroweb-pcejs-jsdf [04:32] sounds like he got a job at facebook. poor guy [04:32] Over time, things are needed [04:32] Because Hampa keeps making the Mac better [04:32] And the emulator better [04:33] So, along the way, Marcio has been basically yanking in Hampa's updates, cutting Friend out entirely [04:33] Now, for the purposes of US [04:33] - Hampa, no idea if he knows who the fuck we are [04:33] - James knows who we are, but is still doing that "yayyyyyy" from the ground while we all fight the red baron [04:33] - Marcio is up for this but he has visions too and so on [04:34] not dissimilar to you, where this is all ancillary to a dream of a emulation presentation system [04:34] Does this all make sense [04:34] yup [04:34] mario is the retro web arcade thing right? [04:34] marcio* [04:34] Yes [04:36] So here's MY question to you [04:36] I found SDL_CreateRGBSurfaceFrom in that .js file [04:37] In that one, it does: [04:37] return surf; [04:37] }, [04:38] In the modified one, it does [04:38] return surface; [04:38] } [04:38] Does that MATTER? [04:38] I just don't know how javascript functions work enough to know if it set a variable or if it just went "5!" [04:39] I can actually cargo cult this enough to make the old function do what the change does [04:41] ha HA this makes it even more fun [04:44] well, it only matters what he calls it when he creates it [04:45] in james' code it says "var surface = ..." [04:45] but in the official one they say "var surf = ..." [04:48] So maybe I'm doing this wrong [04:48] I just modified the original [04:48] Like anyone, I don't like doing 5 little along-the-way changes that are hard to remember [04:49] yeah. whether we do marcio's version or james' version either way is an extra step [04:50] it seems like they need to contribute their work back to either PCE or emscripten, or we need to do it on their behalf [04:50] OK, great, it explodes [04:50] But properly. [04:50] if SDL_CreateRGBSurfaceFrom is unnecessary and can be disabled, why is it called in PCE at all? [04:50] cors_get.php?path=%2F17%2Fitems%2Femularity_engine_v1%2Fpce-macplus.js.gz:1 ./this.program: unknown option () [04:51] and if it is necessary then how does disabling it make PCE.js work? [04:51] and what breaks? [04:51] oh, that sounds good yeah [04:51] now it's just an fs setup thing maybe [04:51] Yeah, now we look at what the loader thinks it provides. [04:51] It makes the canvas, motherfuck [04:51] So that's good [04:52] (Emularity, not the emulator) [04:52] I forget how it works with emularity, we normally create the canvas and then pass it in to the emulator? [04:53] https://github.com/marciot/retroweb-vintage-computer-museum/blob/master/webfiles/emulators/pce-macplus/bootstrap.html [04:54] More than I think I can mentally handle, unless you want to take a shot [05:13] hmm, yeah it does look pretty involved [05:18] the top two functions seem to be most important as far as getting the argument and the files necessary to start the program, but it appears there's a lot more this bootstrap file does [05:19] like fixing up headers in specific types of files so PCE recognizes them [06:00] welp. someone one-upped us - https://www.youtube.com/watch?v=5nViIUfDMJg [06:00] atari 2600 running in minecraft [06:07] Whew [06:08] I say "running" but it took him 18 hours to render about 10 seconds of donkey kong [07:42] I'll give the expected post-mortem shortly. [09:33] *** X-Scale has quit IRC (Quit: HydraIRC -> http://www.hydrairc.com <- Like it? Visit #hydrairc on EFNet) [14:32] *** db48x has quit IRC (Quit: kernel update) [14:36] *** db48x has joined #jsmess [14:36] sounds like progress [15:33] *** X-Scale has joined #jsmess [17:44] So, let's review. [17:45] - Hampa Hug makes the PCE emulator, a multi-emulator for a couple platforms (ibmpc, Atari ST, macplus) [17:45] - At some point, James Friend did our not-patented Emscripten Magic to create PCE.js. [17:47] - Then comes Marcio T. Marcio has an even greater vision. Let's go to that [17:48] -- Marcio wants to make an entire multi-layered, multi-emulator retro experience to exist on the web, with equal parts context, replayability, and historical accuracy. [17:48] -- Many of the emulators out there (Salto, SAE) just kind of work. All Marcio has to do is yank them into his framework a tad [17:49] -- The exception include PCE.js, which he has to do "stuff" to to make work in his system. [17:49] Fast forward a while. [17:49] - James Friend stops mantaining PCE.js. He's onto other things. [17:49] - Hampa keeps developing PCE! Mactinosh gets sound, more accuracy. (We only care about the Mac here) [17:50] - Marcio decides to basically fork his PCE.js into implementing the changes Hampa made. [17:50] - Marcio also fixes some things James didn't deal with, that make it a tad weird with emscripten. [17:50] Now comes us. [17:50] - Marcio says he's willing to help, but is busy until January at the earliest. [17:51] - His instructions for compilation are very good, so I did that. And then the stuff we often do to work in Emularity. [17:51] - One Emscripten function call had to be changed, to force 8bit instead of 32bit this or that [17:52] - Emscripten now compiles with the .mem thing default at -O3, so that has to be unset. [17:52] I shoved it into the Emularity. [17:53] - After the usual compilation hoodoo, I make a pce-macplus.js, which is 4-5 different Mac systems baked in (SE, Plus, Classic, etc.) [17:54] - All the "stuff" is set in the pce-macplus-se, pce-macplus-classic, etc. settings, so they're all there. [17:54] - It goes to black screen, and then dies with "invalid arguments" [17:54] Now, what next. [17:54] - We could wait to Marcio, but if people want to work with me to make it do stuff now, I'm for it. [17:55] - In summary, Marcio offloads a lot of emularity-like trickery for the pce-* emulator into the loader. [17:55] - All his code is in github, all his loaders are too. [17:55] ------ [17:55] That's all. [18:00] Now, there's two fronts to this. First is the code thing itself, the second is prepping a library for Macintosh goodness, for the Emularity to use. [18:00] In the software front, there's the stuff already on the Archive, and there's one fellow (Steve Cole) who's been riding me hard with his many-gigabytes collection of Macintosh material he's been curating and which he desperately wants to see live again. [18:02] Looks like out in Macworld are "DiskCopy 4.2" files, and "raw .dsk" files. [18:03] https://en.wikipedia.org/wiki/Disk_Copy [18:19] *** SketchCow sets mode: +ooo db48x DFJustin Lord_Nigh [18:29] *** db48x has quit IRC (hub.dk hub.efnet.us) [18:29] *** devesine has quit IRC (hub.dk hub.efnet.us) [18:29] *** mta has quit IRC (hub.dk hub.efnet.us) [18:29] *** bai has quit IRC (hub.dk hub.efnet.us) [18:29] *** Lord_Nigh has quit IRC (hub.dk hub.efnet.us) [18:29] *** bwn has quit IRC (hub.dk hub.efnet.us) [18:29] *** jvilk_ has quit IRC (hub.dk hub.efnet.us) [18:29] *** arkiver has quit IRC (hub.dk hub.efnet.us) [18:38] PCE Config file: https://github.com/marciot/retroweb-vintage-computer-museum/blob/master/webfiles/emulators/pce-macplus/pce-config.cfg [18:58] *** db48x has joined #jsmess [18:58] *** Lord_Nigh has joined #jsmess [18:58] *** mta has joined #jsmess [18:58] *** devesine has joined #jsmess [18:58] *** bwn has joined #jsmess [18:58] *** bai has joined #jsmess [18:58] *** hub.efnet.us sets mode: +oooo db48x Lord_Nigh devesine bai [18:58] *** jvilk_ has joined #jsmess [18:58] *** arkiver has joined #jsmess [18:58] *** hub.efnet.us sets mode: +oo jvilk_ arkiver [19:10] *** decay has quit IRC (hub.se irc.efnet.fr) [19:12] So, asking db48x - how much crazy did you do to make sae work in the emularity [19:14] *** Swizzle has joined #jsmess [19:17] *** decay has joined #jsmess [19:39] *** decay has quit IRC (hub.efnet.us ny.us.hub) [19:40] *** decay has joined #jsmess [19:56] *** Swizzle has quit IRC (Read error: Operation timed out) [20:20] *** db48x has quit IRC (Read error: Operation timed out) [21:37] *** db48x has joined #jsmess [21:45] *** Swizzle has joined #jsmess [21:52] *** Lord_Nigh has quit IRC (Read error: Operation timed out) [21:54] *** Lord_Nigh has joined #jsmess [22:28] *** Swizzle has quit IRC (Read error: Operation timed out) [23:04] *** [X-Scale] has joined #jsmess [23:07] *** X-Scale has quit IRC (Ping timeout: 244 seconds) [23:07] *** [X-Scale] is now known as X-Scale [23:26] SketchCow: for SAE I did only some fairly basic things [23:27] yeah I think that was mostly just a matter of "make a couple files available ont he filesystem, and pass a few arguments" [23:27] there was some other stuff as well [23:27] which is basically the gist of what the PCE.js stuff does too, but it has some data transformation for DiskCopy 4.2 files [23:28] there's always a little bit of other stuff yeah :D [23:28] :) [23:28] https://github.com/db48x/emularity/blob/master/loader.js#L603 [23:30] oh yeah, we had to bridge their config and our config [23:30] and map some functions [23:30] yep [23:30] but nothing crazy [23:31] yeah. I think the pce.js case will be almost exactly like the SAE one [23:31] should be trivial then [23:31] rather than envoking the emscripten stuff ourselves we just treat it like a different system and call their functions and let them do the magic [23:32] exactly