diff options
Diffstat (limited to '2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv')
-rw-r--r-- | 2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv | 118 |
1 files changed, 59 insertions, 59 deletions
diff --git a/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv b/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv index 03a4e4e8..c88c3ded 100644 --- a/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv +++ b/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv @@ -2,7 +2,7 @@ hello everyone and welcome to my talk 0:00:02.879,0:00:06.960 -state of retrogaming and emacs +state of retrogaming and Emacs 0:00:04.520,0:00:08.639 [Music] @@ -11,10 +11,10 @@ state of retrogaming and emacs first of all a little bit about myself 0:00:08.639,0:00:13.599 -my name is neilman i'm 28 years old +my name is neilman I'm 28 years old 0:00:12.000,0:00:15.200 -i work as a cyber security consultant +I work as a cyber security consultant 0:00:13.599,0:00:17.440 msg systems and @@ -29,13 +29,13 @@ review the source code for security problems 0:00:20.160,0:00:25.039 -you can reach me by email i have my own +you can reach me by email I have my own 0:00:22.960,0:00:26.480 self-hosted git repositories 0:00:25.039,0:00:28.480 -and i have a blog where you can +and I have a blog where you can 0:00:26.480,0:00:32.160 occasionally find new posts by me on all @@ -44,16 +44,16 @@ occasionally find new posts by me on all kinds of things not just emix things 0:00:32.160,0:00:36.480 -so but the motivation about this one i +so but the motivation about this one I 0:00:34.800,0:00:38.079 -found that emacs is the ultimate +found that Emacs is the ultimate 0:00:36.480,0:00:40.160 procrastination machine and there are 0:00:38.079,0:00:41.200 -lots of fun demonstrations i'll go over +lots of fun demonstrations I'll go over 0:00:40.160,0:00:44.160 a few of them @@ -80,7 +80,7 @@ there's an emulator for the z machine which you can use to play zorg 0:00:55.600,0:00:59.039 -and so i asked myself at this point can +and so I asked myself at this point can 0:00:57.600,0:01:01.039 you actually emulate retro games at @@ -95,7 +95,7 @@ and found some projects but none that were actually able to 0:01:04.479,0:01:08.000 -do it at 60fps so i set out to do my own +do it at 60fps so I set out to do my own 0:01:07.360,0:01:09.439 one @@ -134,16 +134,16 @@ it supports the superchip 8 extensions it runs at full speed all games behave 0:01:28.080,0:01:32.320 -okay as far as i'm concerned and +okay as far as I'm concerned and 0:01:30.159,0:01:34.479 -yeah i'm pretty happy with it it's very +yeah I'm pretty happy with it it's very 0:01:32.320,0:01:37.040 much the hell world of emulation 0:01:34.479,0:01:40.880 -and i might maybe do some other +and I might maybe do some other 0:01:37.040,0:01:43.360 emulation projects in the future @@ -155,7 +155,7 @@ now for the section which is the longest bunch of fun facts about ship a dot el 0:01:45.439,0:01:49.759 -which i've learned +which I've learned 0:01:46.320,0:01:52.240 during this project so @@ -329,7 +329,7 @@ all because well user input basically and 0:03:34.959,0:03:39.040 -emacs is designed to just do whatever it +Emacs is designed to just do whatever it 0:03:37.280,0:03:40.080 needs to do whenever you enter use input @@ -368,13 +368,13 @@ freezes instead which isn't what you want either 0:03:56.720,0:04:00.560 -so i went for timers which forced me to +so I went for timers which forced me to 0:03:59.360,0:04:02.159 do inversion of control 0:04:00.560,0:04:04.080 -meaning that i have to write code in the +meaning that I have to write code in the 0:04:02.159,0:04:06.159 style where it's just call it @@ -389,7 +389,7 @@ happen and to for things to progress at roughly the 0:04:09.120,0:04:12.879 -speed i want to +speed I want to 0:04:11.040,0:04:14.159 so there's the skydiver function which @@ -398,7 +398,7 @@ so there's the skydiver function which is called a 60fps 0:04:14.159,0:04:17.359 -and i have to be very careful to not do +and I have to be very careful to not do 0:04:16.000,0:04:20.479 too much in it @@ -419,7 +419,7 @@ the screen so to map this whole system to mx lisp 0:04:28.800,0:04:33.120 -i've used just integers and vectors +I've used just integers and vectors 0:04:31.199,0:04:35.040 which contain even more integers @@ -440,7 +440,7 @@ what you would do if you were writing c all of this is stored in global 0:04:42.800,0:04:46.479 -variables i'm not using any +variables I'm not using any 0:04:44.560,0:04:48.400 lists at all and as a side effect @@ -464,7 +464,7 @@ this red was rather tricky actually and there were some 0:04:56.720,0:05:01.680 -in garbage collection problems which i +in garbage collection problems which I 0:04:58.560,0:05:01.680 had to resolve over time @@ -533,10 +533,10 @@ effects [Music] 0:05:41.440,0:05:45.919 -for testing i've initially just accused +for testing I've initially just accused 0:05:43.440,0:05:47.280 -the rom until i fit ctrl g +the rom until I fit ctrl g 0:05:45.919,0:05:49.039 and then use the debug command to run @@ -545,7 +545,7 @@ and then use the debug command to run the screen to a buffer 0:05:49.039,0:05:52.320 -later on i found tiny roms that just +later on I found tiny roms that just 0:05:51.360,0:05:55.680 display a static @@ -557,13 +557,13 @@ test screen for example logo and looked whether it looked right 0:05:57.280,0:06:00.960 -i added instructions as needed and went +I added instructions as needed and went 0:05:59.199,0:06:03.360 through more and more and more roms and 0:06:00.960,0:06:05.199 -later i wrote in unit test suite as a +later I wrote in unit test suite as a 0:06:03.360,0:06:06.000 safety net and this unit test suite it @@ -584,7 +584,7 @@ the expected side effects have happened 0:06:14.880,0:06:19.120 -for debugging i usually use e-debug but +for debugging I usually use e-debug but 0:06:17.120,0:06:20.880 this was super ineffective because well @@ -602,13 +602,13 @@ single cycle when it can take like 100 cycles for things to happen 0:06:26.880,0:06:31.360 -therefore i've set up logging and +therefore I've set up logging and 0:06:29.680,0:06:32.720 -whenever i locked something +whenever I locked something 0:06:31.360,0:06:33.919 -and couldn't figure out the error i +and couldn't figure out the error I 0:06:32.720,0:06:37.039 compared my lock output with @@ -617,7 +617,7 @@ compared my lock output with instrumented version of another emulator 0:06:37.039,0:06:40.880 -and if the locks diverge then i have +and if the locks diverge then I have 0:06:39.199,0:06:42.720 figured out where the bug lies and could @@ -629,10 +629,10 @@ look deeper into it future project idea might be a chip 8 0:06:44.479,0:06:50.720 -debugger but i doubt i'll ever +debugger but I doubt I'll ever 0:06:46.639,0:06:52.639 -go into it for analysis i initially +go into it for analysis I initially 0:06:50.720,0:06:54.400 wrote a disassembler which is a very @@ -653,7 +653,7 @@ thinking of what part is data what had this code 0:07:00.000,0:07:03.360 -and i had this great idea for using the +and I had this great idea for using the 0:07:01.840,0:07:05.120 radari 2 framework @@ -665,13 +665,13 @@ and adding analysis and disassembly plug-in for it 0:07:06.479,0:07:10.319 -so i looked into this found okay here +so I looked into this found okay here 0:07:08.400,0:07:12.160 where you can write plugins in c 0:07:10.319,0:07:13.520 -but also in python so i wrote one in +but also in python so I wrote one in 0:07:12.160,0:07:15.039 python and then the scout there's @@ -683,7 +683,7 @@ actually existing one in core which you have to enable explicitly by passing its 0:07:17.440,0:07:21.840 -argument so i've tried it and found it's +argument so I've tried it and found it's 0:07:19.599,0:07:23.680 not exactly as good as my own one so @@ -704,7 +704,7 @@ rendering was the trickiest part of this whole thing because 0:07:31.360,0:07:35.759 -well i decided against using a library +well I decided against using a library 0:07:34.319,0:07:37.120 not like there would have been any @@ -722,13 +722,13 @@ file was too expensive it just created too much garbage and took too long time 0:07:45.120,0:07:49.599 -i then tried creating mutating strings +I then tried creating mutating strings 0:07:47.360,0:07:52.639 this was either either too expensive 0:07:49.599,0:07:55.039 -just like svgs or too complicated i +just like svgs or too complicated I 0:07:52.639,0:07:57.280 tried changing svg tiles which created @@ -737,7 +737,7 @@ tried changing svg tiles which created gaps between the lines 0:07:57.280,0:08:00.720 -then i tried to create an xpm file which +then I tried to create an xpm file which 0:07:59.520,0:08:02.400 was backed by a bull vector @@ -752,7 +752,7 @@ but the image caching effect made it just every nth frame to appear which 0:08:06.879,0:08:11.440 -wasn't good either then i had the idea +wasn't good either then I had the idea 0:08:10.000,0:08:13.280 to just use plain text @@ -770,13 +770,13 @@ this had perfect perfect performance there were many optimization attempts 0:08:18.479,0:08:21.840 -until i got there and it was +until I got there and it was 0:08:20.000,0:08:23.199 -very very stressful i wasn't sure +very very stressful I wasn't sure 0:08:21.840,0:08:26.160 -whether i would ever get to accept the +whether I would ever get to accept the 0:08:23.199,0:08:28.560 performance at all @@ -791,7 +791,7 @@ so technically it shouldn't be difficult to emulate it 0:08:31.280,0:08:34.880 -however doing this is hard because emacs +however doing this is hard because Emacs 0:08:33.519,0:08:37.200 officially only supports synchronous @@ -806,7 +806,7 @@ but there's also emax process which you can launch in asynchronous way 0:08:41.360,0:08:45.279 -so i looked into it and found that +so I looked into it and found that 0:08:43.519,0:08:46.640 employee has a slave mode and mpv @@ -815,7 +815,7 @@ employee has a slave mode and mpv supports listing on the 0:08:46.640,0:08:54.000 -fifo for commands so i've created a pipe +fifo for commands so I've created a pipe 0:08:50.880,0:08:55.519 started a past mpv in loop mode and @@ -824,7 +824,7 @@ started a past mpv in loop mode and always send in pause and pause command 0:08:55.519,0:09:01.839 -to the fifo and that way i could control +to the fifo and that way I could control 0:08:58.000,0:09:01.839 when to start beeping and stop beeping @@ -836,16 +836,16 @@ so yeah that's it so far was a very educational experience 0:09:07.200,0:09:10.320 -i have tried out a bunch of games which +I have tried out a bunch of games which 0:09:09.279,0:09:12.640 were 0:09:10.320,0:09:14.320 -well i almost say the worst ports of +well I almost say the worst ports of 0:09:12.640,0:09:15.839 -classic games i've ever tried +classic games I've ever tried 0:09:14.320,0:09:18.320 it wasn't terribly fun to play them but @@ -857,19 +857,19 @@ was fun to improve the emulator until well things worked good enough 0:09:21.760,0:09:25.120 -and i've learned a lot about how +and I've learned a lot about how 0:09:23.279,0:09:27.760 computers work at this level 0:09:25.120,0:09:28.880 -so maybe maybe i'll in the future make +so maybe maybe I'll in the future make 0:09:27.760,0:09:31.920 another emulator 0:09:28.880,0:09:34.000 -but uh i'm not sure whether anything +but uh I'm not sure whether anything 0:09:31.920,0:09:36.560 more advanced like intel 8080 emulator @@ -887,16 +887,16 @@ because then you could actually have an os 0:09:39.600,0:09:43.120 -inside emacs and fulfill that one +inside Emacs and fulfill that one 0:09:41.680,0:09:45.440 specific meme 0:09:43.120,0:09:47.279 -but if i try to do most serious stuff +but if I try to do most serious stuff 0:09:45.440,0:09:48.000 -i'll probably use chicken scheme which +I'll probably use chicken scheme which 0:09:47.279,0:09:49.920 is my |