Time |
Nickname |
Message |
00:15
🔗
|
db48x |
this is torture |
00:15
🔗
|
db48x |
it takes minutes to step over each statement |
00:15
🔗
|
taisel |
hi |
00:16
🔗
|
SketchCow |
whut |
00:24
🔗
|
SketchCow |
bai is going to come back and all he's going to see is Alon Zakai's Z etched into the wall |
00:24
🔗
|
SketchCow |
"Was he... was he here" |
00:24
🔗
|
db48x |
:) |
00:24
🔗
|
db48x |
taisel: hey, how have you been? |
00:25
🔗
|
taisel |
not much |
00:25
🔗
|
taisel |
ok I guess |
00:25
🔗
|
taisel |
doing other stuff |
00:25
🔗
|
db48x |
same here :) |
00:25
🔗
|
taisel |
is wasm still in perpetual committee hell? |
00:25
🔗
|
db48x |
seems to have made some progress |
00:26
🔗
|
SketchCow |
mmmmmmm |
00:26
🔗
|
SketchCow |
I mean, it works |
00:26
🔗
|
SketchCow |
And we're going to force the issue! |
00:26
🔗
|
taisel |
meanwhile the first few years of JS they fucking hit the "do it live" button |
00:26
🔗
|
taisel |
and said screw superficial incompatibility |
00:26
🔗
|
SketchCow |
The first few years of JS were super broke though |
00:26
🔗
|
taisel |
truuuu |
00:26
🔗
|
taisel |
'member document.all |
00:26
🔗
|
SketchCow |
And nobody had seen it at all |
00:27
🔗
|
taisel |
and the IE5.5 box model |
00:27
🔗
|
taisel |
people also forgot older IEs leaked RAM with normal valid js |
00:28
🔗
|
taisel |
as they never collected cyclic references that got dereferenced by actual events and handles that are active |
00:29
🔗
|
taisel |
you had to manually iterate through child objects manually nulling their properties before setting the object itself to null |
00:30
🔗
|
taisel |
well, the top reference to null that is |
00:30
🔗
|
taisel |
"manually de-cyclic" them |
00:30
🔗
|
* |
db48x nods |
00:31
🔗
|
taisel |
meanwhile obj-c during that era gave up and made people use strong vs. weak by hand |
00:31
🔗
|
taisel |
better than breaking with memory leaks because it was implied shit would be cleaned up like it should |
00:35
🔗
|
taisel |
I like how people are complaining overwatch has a cpu bottleneck |
00:35
🔗
|
taisel |
meanwhile my rx 480 bottlenecks my rig |
00:35
🔗
|
taisel |
got that recently |
00:35
🔗
|
SketchCow |
Summary is, WebAssembly is coming along fine and we have a beautifully working test case even in current state |
00:35
🔗
|
taisel |
nice |
00:36
🔗
|
taisel |
I see a problem with future devs targeting MVP |
00:36
🔗
|
taisel |
which doesn't contain threading, last I heard |
00:37
🔗
|
taisel |
that was "post-mvp" last I checked |
00:37
🔗
|
taisel |
like how people wrote for IE6 for years |
00:37
🔗
|
taisel |
even when it went down in usage. |
00:37
🔗
|
taisel |
WASM needs proper threading out the door imo. |
00:38
🔗
|
taisel |
they need to stop this fascination with running wasm in js |
00:38
🔗
|
taisel |
it was meant to be a clean break |
00:38
🔗
|
taisel |
that whole wasm-in-js thing was the reason threading wasn't mvp |
00:39
🔗
|
taisel |
I wish it was wasm instructions instead of FFI calls |
00:39
🔗
|
taisel |
the example code for locks uses calls to the Atomics object in userland js |
00:39
🔗
|
SketchCow |
This is a lot of anger |
00:39
🔗
|
SketchCow |
Have you tried the new compile? |
00:40
🔗
|
taisel |
last I checked this was the final proposal |
00:40
🔗
|
taisel |
for FFI'ing threading |
00:40
🔗
|
SketchCow |
I just mean we got it going |
00:40
🔗
|
taisel |
yea |
00:40
🔗
|
taisel |
asm.js uses FFIs |
00:40
🔗
|
SketchCow |
baicoianu.com/~bai/emularity/pacman.html and all |
00:41
🔗
|
taisel |
when you use pthread libs for asm.js they use FFIs to userland js under the hood |
00:41
🔗
|
taisel |
and that incurs a very high cost |
00:41
🔗
|
taisel |
and that's what's specified for threading in wasm officially last I checked |
00:42
🔗
|
taisel |
that removes a lot of tight multi-threading cases from being viable |
00:42
🔗
|
taisel |
due to the overhead |
00:43
🔗
|
taisel |
your pthread calls almost all FFI out |
00:45
🔗
|
taisel |
anyhow bbl |
00:45
🔗
|
taisel |
quit poof |
00:45
🔗
|
taisel |
woops |
00:45
🔗
|
taisel |
forgot the / |
00:45
🔗
|
taisel |
lmao |
00:45
🔗
|
|
taisel has quit IRC (Quit: poof poof) |
00:46
🔗
|
DFJustin |
yeah the js interpreter seems to be slow as heck so I'm not sure why they're bothering |
00:46
🔗
|
SketchCow |
That's a lotta anger |
01:04
🔗
|
SketchCow |
So, while we're waiting for bai to come back and swim upstream, I had a question for db48x and DFJustin |
01:04
🔗
|
SketchCow |
How hard is it, do we think, to set up a load where we go either: |
01:04
🔗
|
SketchCow |
- Boot using this image, then swap and have this image loaded |
01:05
🔗
|
SketchCow |
- boot an apple 2 so the first two disk images are in S6D1 and S6D2 |
01:44
🔗
|
|
Swizzle has joined #jsmess |
02:09
🔗
|
|
logchfoo2 starts logging #jsmess at Wed Nov 02 02:09:03 2016 |
02:09
🔗
|
|
logchfoo2 has joined #jsmess |
02:25
🔗
|
|
Swizzle has quit IRC (Quit: Leaving) |
02:36
🔗
|
db48x |
booting with two disks is trivial |
02:37
🔗
|
db48x |
but not very well documented (I've got to double check what goes in the per-system json file and what goes in the per-item metadata) |
02:39
🔗
|
bai |
aaaand I'm back. had to go fix some electrical problems at my mother in law's house. exposed wire, throwing sparks, the whole lot |
02:39
🔗
|
SketchCow |
You won't believe |
02:39
🔗
|
bai |
I caught up on what azakai had to said, he did answer my question |
02:39
🔗
|
bai |
basically "the direct to wasm path is unfinished and fraught with peril" |
02:40
🔗
|
bai |
so the working versions we have are as good as it gets right now, but there's a possibility for it to get even better when they fix that |
02:40
🔗
|
SketchCow |
Right |
02:40
🔗
|
SketchCow |
And he suggested trying -O3 and -Os |
02:40
🔗
|
SketchCow |
If you want to |
02:41
🔗
|
bai |
yeah I think we're using -O3 by default |
02:41
🔗
|
bai |
might be worth trying -Os too, I guess that optimizes for size |
02:42
🔗
|
SketchCow |
Well, double check, I guess |
02:50
🔗
|
SketchCow |
So, I'd say: |
02:50
🔗
|
SketchCow |
- Move off copies of crashy pacman to a semi-perm URL for eval by the browser teams |
02:51
🔗
|
SketchCow |
- Build a800 with preppie please |
02:52
🔗
|
bai |
if you could get me the command we use to build a800 that would be a great help. I couldn't find it with -listsource |
02:52
🔗
|
SketchCow |
atari400 |
02:52
🔗
|
bai |
I'll put some builds up at a more permanent location tonight |
02:53
🔗
|
SketchCow |
Maybe a2600 too |
02:53
🔗
|
SketchCow |
Because these are so glitchy |
02:55
🔗
|
bai |
building atari400 now, if you could drop me some rom urlz I'll get it up when this finishes |
02:57
🔗
|
bai |
playing tempest2k with a gamepad while it compiles |
02:58
🔗
|
bai |
first time I've ever actually been able to tolerate it long enough to get past the first wave |
02:58
🔗
|
SketchCow |
All BIOS: |
02:58
🔗
|
SketchCow |
https://archive.org/details/emularity_bios_v1 |
02:58
🔗
|
SketchCow |
https://archive.org/download/Preppie_1982_Adventure_International_US/Preppie_1982_Adventure_International_US_kfile.atr (Preppie) |
02:59
🔗
|
SketchCow |
https://archive.org/download/atari_2600_pitfall_1983_cce_c-813/atari_2600_pitfall_1983_cce_c-813.bin (A2600) |
02:59
🔗
|
SketchCow |
If it doesn't let you |
03:00
🔗
|
SketchCow |
Let me know |
03:01
🔗
|
bai |
for a800 do I use -cart or mount it as a disk? |
03:01
🔗
|
SketchCow |
Disk |
03:04
🔗
|
bai |
ah, -flop1 |
03:09
🔗
|
bai |
http://baicoianu.com/~bai/emularity/a800.html |
03:10
🔗
|
bai |
dunno if input is working |
03:10
🔗
|
SketchCow |
Checking. |
03:11
🔗
|
SketchCow |
It sounds great. |
03:11
🔗
|
bai |
yeah |
03:12
🔗
|
SketchCow |
I do hear very very occasional crackle |
03:12
🔗
|
SketchCow |
VERY occasional |
03:12
🔗
|
bai |
me too, but they're well below the threshold for insanity |
03:13
🔗
|
SketchCow |
This is why I choose this program for tests |
03:13
🔗
|
SketchCow |
The music never stops |
03:13
🔗
|
bai |
haha |
03:13
🔗
|
SketchCow |
(F1 starts the game, by the way) |
03:13
🔗
|
bai |
oh, f1, of course! |
03:13
🔗
|
SketchCow |
Normally we have a popup with the mappings |
03:14
🔗
|
SketchCow |
Also, I can't tell if that crackling's built in |
03:17
🔗
|
SketchCow |
So, definitely building with O3? |
03:18
🔗
|
bai |
/home/bai/mnt/emsdk_portable/emscripten/incoming/emcc -O3 -s USE_SDL=2 -s USE_SDL_TTF=2 -s BINARYEN=1 -D__unix__=1 -DPOSIX=1 --memory-init-file 0 -s ALLOW_MEMORY_GROWTH=0 -s TOTAL_MEMORY=268435456 -s DISABLE_EXCEPTION_CATCHING=2 -s EXCEPTION_CATCHING_WHITELIST='["__ZN15running_machine17start_all_devicesEv","__ZN12cli_frontend7executeEiPPc"]' -s EXPORTED_FUNCTIONS="['_main', '_malloc', '__Z14js_get_machinev', '__Z9js_get_uiv', '__Z12js_get_soundv', '__ZN15mame_ui_man |
03:18
🔗
|
SketchCow |
I'd say: |
03:18
🔗
|
SketchCow |
- Drop that list to alon in an e-mail for opinion |
03:18
🔗
|
SketchCow |
- build a2600 |
03:19
🔗
|
SketchCow |
- We're done for now unless you want to do more, but other than putting up a perm URL for the developers to determine why we crash them |
03:19
🔗
|
SketchCow |
I mean, it's obvious we're a bear |
03:19
🔗
|
SketchCow |
I don't want you spending time chasing down waterfalls that then turn out to be 3 bugfix releases away from certain death |
03:20
🔗
|
bai |
yeah, sounds like it's not worth spending more time on the pure-wasm builds until we get the knod |
03:21
🔗
|
bai |
this has been a good exercise for me too, forcing me to learn how to compile and run all these systems I've been putting off learning |
03:22
🔗
|
bai |
next target, dosbox! |
03:23
🔗
|
SketchCow |
I'm trying to think if there's anything else that needs your attention more |
03:23
🔗
|
SketchCow |
Well, I guess prettying these loads would be nice. |
03:24
🔗
|
SketchCow |
Set them to black backgrounds, make the resolution correct |
03:25
🔗
|
SketchCow |
Example: Pacman is 224x288 |
03:25
🔗
|
SketchCow |
Traditionally, we set that to Twice 288 (576) |
03:27
🔗
|
SketchCow |
Atari 800 is 336x225, but I'd double it to 672*450 |
03:27
🔗
|
SketchCow |
Sonic should be driver "genesis", and resolution 512x448 |
03:28
🔗
|
SketchCow |
And jaguar is 360x240, doubled to 720x480 |
03:35
🔗
|
SketchCow |
DFJustin: Does Dreamcast work at all |
03:37
🔗
|
SketchCow |
Archiving libbgfx.a... |
03:37
🔗
|
SketchCow |
make: *** [asmjs] Error 2 |
03:45
🔗
|
bai |
sonic is using genesis now. I'll fix the resolutions |
03:54
🔗
|
db48x |
noo |
03:55
🔗
|
db48x |
I got it all figured out, and now browserfs is throwing some exception |
03:59
🔗
|
bai |
derf |
04:17
🔗
|
SketchCow |
So, pacman is HUGE now |
04:18
🔗
|
bai |
did I over-double it? |
04:18
🔗
|
SketchCow |
Well, maybe some other screen thing |
04:18
🔗
|
SketchCow |
Again, don't overthink |
04:18
🔗
|
SketchCow |
Just wanted it decent for us showing people / the devs |
04:19
🔗
|
bai |
JSMAMELoader.nativeResolution(448, 576), |
04:19
🔗
|
bai |
oh, it changes when I go fullscreen or resize |
04:20
🔗
|
bai |
I bet this is related to the percent-based sizing in the example code I copied |
04:20
🔗
|
db48x |
yea, you quadrupled it |
04:20
🔗
|
db48x |
set the native resolution to the actual native resolution, since you use setScale(2) |
04:22
🔗
|
bai |
oh dur, yeah didn't notice the setScale. I just copied one of the examples |
04:23
🔗
|
db48x |
:) |
04:25
🔗
|
db48x |
for some reason my source map for BrowserFS isn't working |
04:26
🔗
|
db48x |
I had it all set up at some point |
04:27
🔗
|
bai |
hmm, wonder if the source map and the js file are out of sync |
04:46
🔗
|
db48x |
it couldn't find the files referred to by the source map |
04:47
🔗
|
db48x |
hrm |
04:47
🔗
|
db48x |
TypeError: Cannot read property 'isDir' of undefined at BFSEmscriptenFS.createNode |
05:05
🔗
|
db48x |
it's trying to do this.FS.isDir, but this.FS is undefined |
05:05
🔗
|
db48x |
no idea what's going on there |
05:06
🔗
|
bai |
that's with modularize? |
05:13
🔗
|
DFJustin |
I don't think dreamcast does much besides the bios menus |
05:16
🔗
|
DFJustin |
hmm I have got some screenshots of it running chu chu rocket |
05:38
🔗
|
bai |
tried an em-dosbox build. weird errors |
05:38
🔗
|
bai |
warning: Output contains some very large functions (7327 lines in sh), consider building source files with -Os or -Oz, and/or trying OUTLINING_LIMIT to break them up (see settings.js; note that the parameter there affects AST nodes, while we measure lines here, so the two may not match up) |
05:38
🔗
|
bai |
bad subtract types ["assign", true, ["sub", ["name", "h"], ["binary", ">>", ["binary", "+", ["name", "j"], ["binary", "<<", ["name", "m"], ["num", 3]]], ["num", 3]]], ["call", ["name", "Y"], [["unary-prefix", "+", ["sub", ["name", "h"], ["binary", ">>", ["binary", "+", ["name", "j"], ["binary", "<<", ["name", "n"], ["num", 3]]], ["num", 3]]]]]]] |
05:43
🔗
|
yipdw |
sexpy |
05:55
🔗
|
SketchCow |
Well, productive day. |
05:58
🔗
|
SketchCow |
Glad we stopped you waiting more time, bai |
06:00
🔗
|
bai |
eh, wouldn't call it a waste, now I know how to build a version of llvm with wasm32 and wasm64 output targets |
06:00
🔗
|
bai |
so I can probably give some feedback ad they implement that, there may be some changes needed to other project makefiles |
08:09
🔗
|
|
yipdw has quit IRC (Remote host closed the connection) |
08:10
🔗
|
|
yipdw has joined #jsmess |
10:33
🔗
|
SketchCow |
ha ha |
10:33
🔗
|
SketchCow |
So many people discovering this whole project today because of the dumb tweet |
15:21
🔗
|
db48x |
hah, jvilk saves the day |
17:41
🔗
|
SketchCow |
? |
17:45
🔗
|
db48x |
I sent him an email last night asking about the error I was getting from BrowserFS, and he pointed out that I was doing something dumb |
17:46
🔗
|
bai |
hah, he's good at that |
17:46
🔗
|
bai |
which dumb thing was it? |
17:46
🔗
|
db48x |
bai: when you construct an EmscriptenFS, it looks for the global FS, PATH, and ERRORNO_CODES |
17:47
🔗
|
db48x |
since I modularized the emulator, they're not globals any more and I have to pass them in specifically |
17:47
🔗
|
bai |
ah right, yeah |
17:47
🔗
|
db48x |
var BFS = new BrowserFS.EmscriptenFS(this._module.FS, this._module.PATH, this._module.ERRNO_CODES); |
18:02
🔗
|
SketchCow |
What are you working on, db48x |
18:03
🔗
|
db48x |
supporting a modularized emscripten build |
18:03
🔗
|
db48x |
unfortunately it requires some tweaks to the code generated by emscripten, which means it may not be feasible |
18:07
🔗
|
SketchCow |
I've been thinking a lot about double-loading. |
18:07
🔗
|
db48x |
loading multiple disks? |
18:07
🔗
|
bai |
yeah, I think I had an experimental modification to emscripten which let you specify which symbols to export, so you could make module.FS, module.ENV, module.PATH, and module.ERRORNO_CODES accessible member variables rather than being internal scope |
18:08
🔗
|
SketchCow |
So, a short-term fix for the non-booting apple disks |
18:08
🔗
|
db48x |
loading two disk images, one into flop1 and the other into flop2 is easy |
18:10
🔗
|
db48x |
bai: I just did this: |
18:10
🔗
|
db48x |
sed -e '/Module\["FS_unlink"\] = FS.unlink;/a Module["FS"]=FS;Module["PATH"]=PATH;Module["ERRNO_CODES"]=ERRNO_CODES;' <"mame${system}.js" >"mame${system}.module.js" |
18:11
🔗
|
db48x |
bbiab, lunching |
18:13
🔗
|
bai |
db48x: yeah, that's pretty much exactly what I did too, but I was trying to think of a way that could work generally and be applied upstream, so my solution was that there was a parameter you could pass in, like exportVars: ['FS', 'PATH', 'ERRNO_CODES'], and then the compiled code would basically do, if (exportVars) { exportVars.forEach(v => Module[v] = ...); } |
18:13
🔗
|
bai |
where ... is me forgetting how I did that variable expansion |
19:55
🔗
|
SketchCow |
Do we think we could define flop1 and flop2's contents as is, like in a json? |
19:56
🔗
|
SketchCow |
I'd like to load one image in and then the current item's image in the second floppy. |
19:56
🔗
|
SketchCow |
This would.... solve a lot. |
20:10
🔗
|
DFJustin |
you could kludge it with the extra parameters thing |
20:15
🔗
|
SketchCow |
{ |
20:15
🔗
|
SketchCow |
"name": "Apple IIe Enhanced", |
20:15
🔗
|
SketchCow |
"js_filename": "mameapple2e.js.gz", |
20:15
🔗
|
SketchCow |
"bios_filenames": ["apple2e.zip"], |
20:15
🔗
|
SketchCow |
"peripherals": ["flop1"], |
20:15
🔗
|
SketchCow |
"native_resolution": [560,384], |
20:15
🔗
|
SketchCow |
"extra_args": ["-sl1","memexp","-sl6","diskii","-sl4","\"\""], |
20:15
🔗
|
SketchCow |
"driver": "apple2ee" |
20:15
🔗
|
SketchCow |
} |
20:15
🔗
|
SketchCow |
Oh, I see. Set peripheral to flop2, extra args to the image |
20:15
🔗
|
SketchCow |
Can we do this without putting the same boot disk in each item? |
20:57
🔗
|
db48x |
no, because then emularity won't know to download the extra file |
20:57
🔗
|
SketchCow |
OK |
20:58
🔗
|
SketchCow |
So boot disk in each it is. :) |
23:05
🔗
|
|
Swizzle has joined #jsmess |
23:27
🔗
|
|
Swizzle has quit IRC (Read error: Operation timed out) |