[00:10] Looks excellent. [00:10] bai and db48x - could you take a look [00:14] i'm just starting with the description of the config-object. that could take a while. [00:24] I suspect the rough edges between the two outlooks won't be so bad. [00:24] By the way, what we do here is concatenate your .js files make them one big one. [00:24] Works fine, obviously would eventually be something else, but that's one of the things done. [00:24] Creating an sae.js [00:26] exactly. i want to do that too some day, but for now it's easier for editing. [00:28] i guess version 1.0 will be a single file then. [00:29] It's an easier thing all around, to have an all-in-one. [00:29] But that said, there's nothing that can't be a script that GENERATES the all-in-one [00:29] yeah just need a simple build script [00:29] Since your code is much more legible and understandable as it is. [00:29] I'll check it out in a bit, prepping for my mother in law's birthday dinner now [00:29] The same way that MAME has its source code, but then does a lua script to make the javascript [00:29] You got it, bai [00:30] yes, right [00:33] i've look for a js replacement for #include. so have one js file, which doe include all the other. but that is not so easy possible it seems.. [00:34] yeah it's not something javascript really ever had a concept of, it's normally just handled as a build step, since generally there are other optimizations you want to make when you're pushing it live anyway, like minification [00:40] exactly. for SAE, i did not packed the code so ppl can read it by ctrl+u. also i think most modern browsers does use JIT, so the shape of the source-code should not realy matter. [00:42] but i'm not an expert in these things. i'm relative new to web-stuff. [00:43] it's more about download size but even that is questionable with compression [00:44] closure compiler does some optimizations while minifying but it's hard to say how much effect that actually has these days [00:45] dl-size is definitely a point [00:49] the sae-site should be more a demo-site, showing things in "pain-text". optimizations could always be done, like you are doing now.. [00:49] does V8 still have the thing where it doesn't JIT methods whose source code exceeds some number of bytes [00:50] dunno [00:50] it was just one of those thoughts that popped up re: shape of source code and JIT efficiency [00:52] i found a memory allocation limit of 1gb for a uint8array in chrome. zorro3 could go up to 1,5gb [01:00] er [01:00] is that the overhead of the emulator? [01:00] amiga never had 1GB of RAM or storage, did they? [01:01] hey shut up I'd give amiga 3gb of ram if it asked for it [01:01] at 5am [01:01] from a limo [01:01] while I just got to sleep [01:03] heh, iirc there are some zorro-cards but i could be wrong. at least internally it's supported. [01:04] oh it's an expansion card [01:04] yep [01:04] thought it was like a game [01:07] maximun onboard-memory was 2mb chip-ram + 1536k slow/bogo ram. more memory was avail via expansion cards, usually called fast-ram (cos 32bit access) [01:10] chip- and bogo-ram are 16bit, but can be accessed from the custom chips while fast-ram can not. but it's different for later models. the aga-chipset also can access bitplane-data in fast-ram... [01:19] naTmeg: howdy [01:19] db48x: hi [01:24] SketchCow: does archive.org have an amiga bios kicking around? [01:25] ah, perhaps http://archive.org/download/Amiga_Demobase_Version_3/Amiga_Demobase_Version_3.zip/Kickstarts%20Winuae%2FKS%20ROM%20v3.1%20%28A1200%29%20rev%2040.68%20%28512k%29.rom [01:26] thats for an a1200 with aga [01:36] naTmeg: you've got a global called cfg [01:36] yes [01:37] am I correct in assuming that sae.setModel is what writes to it? [01:38] yep, it writes to SAEV_config. cfg is a reference to it. [01:39] you could also use SAEV_config directly [01:39] oh, I see [01:39] in init you set cfg = sae.getConfig() [01:39] in example.js [01:40] this.getConfig = function() { return SAEV_config; } [01:40] this.getInfo = function() { return SAEC_info; } [01:40] from amiga.js [01:41] cfg is just a shortcut, i i dont have to write SAEV_config each time [01:41] i=so [01:43] yes [01:44] SAEC_info is a global constant created at page-load. SAEV_config is the global config variable. [01:46] do not alter it while the emul is running, except for disk-change, so for SAEV_config.floppy.drive[].file [01:46] naturally [01:46] ok, so we can skip browserfs for this [01:47] if emul is running: set SAEV_config.floppy.drive[].file, then call sae.insert() [01:47] or clr SAEV_config.floppy.drive[].file, then call sae.eject() [01:48] so the emulator get noticed about the disk-change [01:49] yes, this may be the first emulator where the user can actually swap disks properlyl [01:49] :) [01:50] I think that just to keep the changes to emularity small we'll still use browserfs [01:50] sae won't have to know [01:50] ok [01:53] you can enable up to 4 floppy-units by cfg.floppy.drive[<0-3>].type = SAEC_Config_Floppy_Type_35_DD; [01:54] defaults to 2 (df0-1) [01:54] nice [01:55] to remove a rom or adf use the clr-function: cfg.floppy.drive[].file.clr(); [01:57] it's wise to always have some fast-ram enabled. many demos and games depend on it. at least 512kb-1mb [02:00] what disk image formats do you support? [02:00] for OSC-stuff i would recommend to use the default settings (A2000). for ECS an A500+ and for AGA an A1200 [02:02] ADF, DMS, IMG, EXE and SCP, uncompressed, not zipped-up [02:03] also HDF and VHD [02:06] IMG is insteresing in combination with "crossdos", a amiga-soft to read PC-floppies. it's pretty much untested, even so the SCP-support [02:30] no IPF? [02:30] not yet, many lines of code [02:35] naTmeg: how does sae handle the canvas dimensions? [02:39] currently it defaults to "modes": 360x284 for lores, 720x568 for hires and 1440x568 for super-hires [02:40] tis controlled via cfg.video.hresolution and cfg.video.hresolution [02:41] does sae change the inner or outer dimensions (or both) of the canvas when switching modes? [02:42] see in config.js SAEC_Config_Video_HResolution_* and SAEC_Config_Video_VResolution_* for defaults [02:43] the canvas will have e.g. 720x568 pixel for hires [02:44] you could also experiment with cfg.video.size_win.* for a custom dimension and canvas-size [02:47] see default_prefs() in config.js [02:53] it does not change canvas-dimensions. the canvas is created and added to the "myVideo"-div on sae.start(). it gets removed and destroyed at sae.stop() [02:54] ah [02:56] https://gist.github.com/db48x/c0c80081fbfa967c648bc219fc99c6cb [02:58] there are just two complications so far [02:59] one is that we have to load sae before properly configuring it, and the other is that it creates the canvas element itself [02:59] the first won't be too much trouble [03:00] not sure how I will deal with the second [03:00] I require comestibles [03:00] back later [03:00] i can make an option so you could pass a canvas [03:01] requires some work on sae. i could do that tomorrow [03:01] well, that would simplify it for me :) [03:01] but it should have e.s 720x568 [03:02] db48x: our first pass attempt is here, https://archive.org/details/broken_on_impact_asteroids - that references some of the bios files which I think SketchCow put in the same place that the machine files go for mame [03:02] yes, currently it'll get set to the native resolution [03:03] no does not matter, i make some auto-stuff [03:04] Yes, I will need to swap out the emulator to the newer emulator in that structure. [03:05] bai: I don't see any changes in the loaderlab [03:05] https://ia801506.us.archive.org/9/items/emularity_engine_v1/scriptedamigaemulator.json [03:05] in that build we basically got to the part where I could call SAE({cmd: 'init'}) and AMIGA.start() and all that was missing with the config stuff [03:05] db48x: No, no, this was all a "fuck it, throw it in, see if it explodes or does something" [03:05] :) [03:06] We were just trying a blind setup. [03:07] But it was time to get a test case up. (Make a .json, make an item, shove in the bios into the bios item, etc.) [03:08] yep, that helps [03:08] I'm confortable with sae-a1200, sae-a500, sae-a500-1mg and so on [03:08] In the future. [03:08] heh, that was the old 0.8.3 "api", quite a mess [03:08] naTmeg will be like a classy gentleman watching us run around like butchers [03:08] but he'll respond [03:09] naTmeg: yeah we literally just grabbed what was on the site and tried to shoehorn it in, heh [03:09] I wanted to see if it would throw up into console [03:09] it was not an elegant and coordinated effort :D [03:10] basically imagine sketchcow doing this while I watched over his shoulder and shouted unix commands at random https://geekhack.org/index.php?action=dlattach;attach=115685;type=avatar [03:12] I'm happy to regenerate the scriptedamigaemulator.js.gz I did before. [03:12] Basically, I take the includes, in the order you had them, smoosh them together. [03:12] (Since that's the load order) [03:13] yes [03:15] cat script.txt | grep script | cut -f4 -d'"' | sed 's/sae\///g' [03:16] cat `cat script.txt | grep script | cut -f4 -d'"' | sed 's/sae\///g'` > scriptedamigaemulator.js [03:16] naTmeg: We forgot to mention the part where we make it so fascinating you never sleep [03:17] root@teamarchive0:/1/SAE# ia upload emularity_engine_v1 scriptedamigaemulator.js.gz [03:17] emularity_engine_v1: uploading scriptedamigaemulator.js.gz: [################################] 1/1 - 00:00:00 [03:17] Emulator went from 120k compressed to 353k [03:18] SketchCow: heh, only a few minutes left :) [03:18] https://archive.org/details/broken_on_impact_asteroids [03:18] jquery-1.10.2.min.js?v1.10.2:4 Uncaught TypeError: Q[a].exec is not a functionmt @ jquery-1.10.2.min.js?v1.10.2:4kt @ jquery-1.10.2.min.js?v1.10.2:4at @ jquery-1.10.2.min.js?v1.10.2:4find @ jquery-1.10.2.min.js?v1.10.2:5init @ jquery-1.10.2.min.js?v1.10.2:4x @ jquery-1.10.2.min.js?v1.10.2:4(anonymous function) @ archive.min.js?v=ae78563:317handle @ jquery-1.10.2.min.js?v1.10.2:5dispatch @ jquery-1.10.2.m [03:18] in.js?v1.10.2:5v.handle @ jquery-1.10.2.min.js?v1.10.2:5 [03:18] jquery-1.10.2.min.js?v1.10.2:4 Uncaught TypeError: Q[a].exec is not a functionmt @ jquery-1.10.2.min.js?v1.10.2:4kt @ jquery-1.10.2.min.js?v1.10.2:4at @ jquery-1.10.2.min.js?v1.10.2:4handlers @ jquery-1.10.2.min.js?v1.10.2:5dispatch @ jquery-1.10.2.min.js?v1.10.2:5v.handle @ jquery-1.10.2.min.js?v1.10.2:5 [03:18] jquery-1.10.2.min.js?v1.10.2:4 Uncaught TypeError: Q[a].exec is not a function [03:18] BOOM [03:19] where do you get that? [03:19] Console [03:19] naTmeg: Do NOT burn brain power on this [03:19] Burn it on your updates for tomorrow. [03:20] hmm, I'm not getting those errors in chrome but lemme try a hard refresh [03:20] yeah for me it's just doing the same it did before, where it loads but is waiting for all the init stuff to run [03:21] no errors in console, ff or chrome [03:21] Huh. [03:21] (after starting it, of course) [03:21] there's a 403 of some weird image filename but I figure that has nothing to do with this [03:21] oh, hold on a second, I moved my mouse over something int he window and got the Q[a].exec error [03:22] ah, it's onfocus [03:22] something specifically with the archive logo in the bar at the top??? [03:23] the archive logo and the dark gray bar around i cause the error to throw when you enter or exit it [03:23] weird. [03:26] *** naTmeg has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** balrog has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** i0npulse has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** pfallenop has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** GLaDOS has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** yipdw has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** devesine has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** godane has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** mattl has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Ctrl-S___ has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** DFJustin has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** ted______ has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Ipggi has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Vito` has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** gamingrob has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** jvilk has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Lord_Nigh has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** gsathya` has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Rye has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** joepie91 has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** Coderjoe_ has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** decay has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] *** arkiver has quit IRC (irc.Prison.NET hub.efnet.us) [03:26] oh yeah, there's a whole sub-dropdown menu bar that shows up sporadically [03:26] derp [04:14] *** Coderjoe_ has joined #jsmess [04:14] *** pfallenop has joined #jsmess [04:14] *** GLaDOS has joined #jsmess [04:14] *** jvilk has joined #jsmess [04:14] *** i0npulse has joined #jsmess [04:14] *** gamingrob has joined #jsmess [04:14] *** Vito` has joined #jsmess [04:14] *** Ipggi has joined #jsmess [04:14] *** ted______ has joined #jsmess [04:14] *** DFJustin has joined #jsmess [04:14] *** Ctrl-S___ has joined #jsmess [04:14] *** mattl has joined #jsmess [04:14] *** Rye has joined #jsmess [04:14] *** gsathya` has joined #jsmess [04:14] *** Lord_Nigh has joined #jsmess [04:14] *** godane has joined #jsmess [04:14] *** devesine has joined #jsmess [04:14] *** balrog has joined #jsmess [04:14] *** yipdw has joined #jsmess [04:14] *** joepie91 has joined #jsmess [04:14] *** west.us.hub sets mode: +oooo Vito` DFJustin Lord_Nigh joepie91 [04:43] *** decay has joined #jsmess [04:43] *** arkiver has joined #jsmess [04:43] *** irc.servercentral.net sets mode: +o arkiver [06:09] (Well, that was productive) [06:24] go efnet go [07:03] *** Coderjoe_ has quit IRC (Read error: Operation timed out) [07:11] *** Coderjoe has joined #jsmess [07:17] *** db48x has quit IRC (Remote host closed the connection) [07:22] *** db48x has joined #jsmess [07:22] ow [07:22] emacs actually crashed [11:38] *** i0npulse has quit IRC (hub.dk irc.homelien.no) [12:25] *** i0npulse has joined #jsmess [14:27] ok it was pointed out to me that I was using the wrong model for state of the art, it does work http://fos.textfiles.com/dfjustin/amiga/a2000/ [17:50] I hope the nice amiga guy comes back! [20:06] *** naTmeg has joined #jsmess [20:06] hi guys [20:07] Hi! How is it going? [20:07] good. i have something ready to test: http://scriptedamigaemulator.net/example2.htm [20:08] now, a canvas can be passed directly. [20:08] bai and db48x [20:09] i also updated the example with a resolution-selector and more comments [20:14] i've updated "amiga.js, config.js, m68k.js, video.js". they are live on sae.net the files on github are old and does not work. [20:19] basically it does not change alot for you: instead in
you can do a now. SAE does notice the difference and (should) act accordingly. [20:20] it does change the size of the canvas according the the config. see example.js [20:21] is http://scriptedamigaemulator.net/example.js what we should be looking at for our integration? [20:22] jep [20:22] example.htm for div-style, example2.htm for canvas-style [20:23] hmm, alright. guess it's just a matter of slicing it up and putting it in the right places in AmigaLoader or whatever db48x has going [20:23] it all looks relatively straightforward, just a decent chunk of stuff that has to be set up before we call start [20:24] example.htm and example2.htm are nearly the same. they just differ at one line (bottom) [20:27] i also added a new feature: there are 4 new event-hooks now. started, stopped, reseted, paused. they get called after one of those requests is complete. see example.js [20:29] yeah, saw those. for the archive.org case 'started' is probably the most important one - within that ecosystem you're gonna unload the whole page to get to a different game/app [20:29] ic [20:30] but might be good to expose some buttons for pause and reset [20:31] sae does add onMouse*, onKey* handlers to the canvas. also it does ocument.addEventListener(keyup, keydown) [20:32] -onKey* for canvas [20:33] correct, mouse-handlers are added to the canvas [20:34] what function do they call to pass thr handlers through to the emulator? we have some use cases where we like to inject "synthetic" key presses to trigger certain behaviors, that's generally easier if we can inject directly rather than synthesizing DOM events [20:35] guess that's all handled here right? http://scriptedamigaemulator.net/sae/input.js [20:35] right [20:35] thats the only old file i used from 0.8.3 i should be reworked [20:35] it [20:39] looks like SAEO_Keyboard.handleKey() can be called to inject keydown/keyup events easily enough. Is the running emulator's SAE_Keyboard instance stored somewhere that can be accessed easily? [20:40] I should just find a kickstart rom and poke around I guess, heh [20:40] i can make a maethod in amiga [20:40] lemme check this.. [20:43] you want to pass an event right? [20:44] yeah [20:44] w8 [20:45] basically for certain machines which may be missing keys that are available on common modern keyboards, we have an on-screen virtual keyboard that lets us expose that functionality [20:45] not sure if amiga really falls into that category though, they had pretty standard keyboards right? [20:47] and I guess you have another mechanism for hooking buttons? [20:47] the LED indicator hooks are neat, we've talked about having indicators for other machines but don't have any kind of UI for that yet [20:50] ok. updated amiga.js and input.js. you can use sae.keyPress(event, down) now. [20:50] untested [20:51] cool, thanks [20:53] ahm, buttons are defined via cfg.ports[<0-1>].move and cfg.ports[<0-1>].fire see config.js [20:56] ok cool. and gamepads...I see support for joysticks and such here, are those bound to the gamepad events anywhere? [20:57] im not sure now. are gameoads a unique class of input-event on amiga? if so, thea are not supported [20:58] I really don't know much about amiga to be honest. I'm just running through a checklist of things we normally need to consider when we hook up new machines, basically how to match up the inputs and outputs between the two systems [20:58] a joystik is emulated over keyboard [20:58] exactly [20:59] oh ok. if you're currently emulating it with the keyboard we might be able to map basic HTML5 gamepad events to those same functions you're calling [20:59] ok [21:00] ahm, you could take a look at http://scriptedamigaemulator.net click Config -> Port here you see all possible configurations [21:02] ah nice, lots of options here [21:02] that whole input part would require a rework. the original file from winuae is >10k lines. had not the time for that yet.. [21:03] you can also use the predefined-constants SAEC_Config_Ports_*, defined in config.js [21:05] there are basically two ports, 0-1. port 0 can be empty, mouse or joystick. port 1 can only be empty or joystick [21:06] joystick-move can be assign to WASD, arrow keys and numpad 8426 [21:06] ok. those represent physical ports on the amiga right? [21:06] right [21:09] is the canvas-thing like what you meant yesterday? [21:10] hmm, I wasn't here for that discussion, I guess db48x wanted to be able to pass a canvas in directly rather than using one that you were managing internally? [21:10] oh sorry, that was db48x :) [21:11] we are a collective, we speak as one :D [21:11] :) [21:15] regarding your question about the keyboard. it's pretty much the standard-layout. some keys are missing or differ. [21:17] yeah, looked at a keymap and the only thing I see that I don't recognize are the little alphabet key and the help key next to delete [21:18] and I guess the alphabet key is just meta, and help could just be mapped to whatever [21:19] they are actually called amiga-keys :) [21:19] they serve like alt [21:21] i mean like the win-key [21:22] hah, like I said, I'm not familiar with amiga aat all :) one of my friends had one but I never owned one myself [21:22] but yeah, nothing there that causes us any difficulties [21:23] it was my first computer ~25 years ago. i own serval :) [21:33] i bug in example.js/hook_log_error(), line ~420 you do not have to call stop(). i deleted that line. [21:33] i=a [21:33] bai: What's the action here; do we wait for db48x ? [21:34] *** SketchCow sets mode: +oooo bai balrog Coderjoe db48x [21:34] *** SketchCow sets mode: +oooo devesine GLaDOS godane naTmeg [21:34] *** SketchCow sets mode: +o yipdw [21:35] im here at least 6 more hours [21:36] I think db48x had started figuring out how the AmigaLoader stuff should work, now that he's got the canvas fix from naTmeg hopefully we're not far from having a basic bootable system, I'm just pumping naTmeg for info right now so once we get the basic system booting we can run through all the different systems and wire them up [21:36] yea, he already made some progress yesterday [21:37] I mean I think it's basically gonna be similar to the apple situation where we should pick the config that's gonna serve the most amount of content as you slam things in, then we go back and tweak different peripherals or memory settings or whatever for specific items [21:38] yes, best to use a sae.setConfig() and then tweak [21:38] ups, i meant sae.setModel() [21:39] stuff like the gamepads I figure we'll treat as lower priority but wanted to get an idea of how it all ties in so if we need any tweaks we can get them in up front [21:39] naTmeg: what would be the best model to choose for broadest software compatibility? [21:41] for OCS an A2000 or A500+, for ECS an A500+ and for AGA an A1200. make sure to always use the right roms. do not use e.g. an A1200-rom on a A2000 config [21:42] OCS/ECS/AGA are the differnet chipsets, of the amiga generations [21:43] OCS was first, most games and demos use that. then came ECS and later AGA. AGA does require about 2-5x the processing power over OCS [21:44] ok. I guess that's more for sketchcow since he's the man with the content firehose [21:44] yea [21:45] maybe we'll pick 3 or 4 different machine configs and make them available via a metadata field on each item [21:47] yes, different configs for titles. an AGA-title will not work in an OCS/ECS-config, while an OCS/ECS-title should work under AGA. [21:50] yeah, makes sense [22:03] ok i'm back, just made another pot of coffee. [22:03] so where's db48x? [22:04] * naTmeg passes SketchCow a bucket of water to wake db48x up [22:17] i just noticed that the SuperHires screen-mode does not work in combination with AGA. i does want a genlock drawing-mode. i'll check that.. [22:18] it [22:23] evening [22:23] hi db48x [22:24] howdy [22:24] canvas is good; thanks [22:26] ok just fix another bug in winuae, updaed playfield.js. [22:27] db48x: great [22:27] SuperHires in combination with AGA does not work. [22:28] db48x: i've updated example2.hml today. some new featrues, see log [22:30] damn what a mess: not=now [22:31] :) [22:31] need more coffee [23:08] pretty tired myself [23:10] I'm at the point where I can start testing my changes to emularity [23:11] I feel like I should sleep first, though [23:15] nah :) [23:19] the code I've written in the last hour is probably full of bugs [23:21] ok :) [23:23] i'm here tomorrow same time [23:24] I pulled updated script files from your site [23:24] prefer to use github, of course [23:25] s/github/version control/ [23:25] do not,files on gibhub are old [23:26] I wrote a makefile that runs them through the closure compiler [23:26] i can sync them now if you want [23:26] ic [23:26] I should send that to you as a pull request [23:28] i'm not very familiar with github, i mainly use it to host files [23:32] ok, github is up to date [23:39] one moment [23:41] *** jvilk has quit IRC (Ping timeout: 244 seconds) [23:41] *** Lord_Nigh has quit IRC (Ping timeout: 244 seconds) [23:41] merged [23:42] *** gsathya` has quit IRC (Ping timeout: 244 seconds) [23:42] *** gsathya` has joined #jsmess [23:43] *** Lord_Nigh has joined #jsmess [23:46] *** jvilk has joined #jsmess [23:51] *** logchfoo1 starts logging #jsmess at Fri Jul 29 23:51:55 2016 [23:51] *** logchfoo1 has joined #jsmess