Home
Videos uploaded by user “Bisqwit”
Obfuscated C programs: Introduction
 
03:46
If you program long enough, eventually you will run into a programming art category called "obfuscated code" or “code golf”. You can find these especially at IOCCC. In this video I introduce the concept and the basic ideas behind such design. More information below (click "Show more"). I realize the category is "obfuscated code", not "small code", but often trying to compress your code into the smallest size will also effectively obfuscate its function. I also realize that some of the individual changes I did in the video did actually _not_ result in smaller program code size, but the opposite. But the end result is still the shortest I could manage, if you remove the "int", the "return", and the space after "include". Actual obfuscation techniques include using small and meaningless variable names, using unusual syntax constructs, redefining reserved words, adding code that appears to do one thing but does something else (or nothing at all), creating a complex machinery (such as an interpreter) to do a different task, encryption, and so on. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Source code: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/obfuscated/ Music: - Star Ocean :: Encounter :: Motoi Sakuraba (converted into MIDI and played through OPL3 emulation through homebrew software) - Chrono Cross :: Jellyfish Sea :: Yasunori Mitsuda Contribute subtitles: https://www.youtube.com/timedtext_video?v=rwOI1biZeD8 I got to use the word "defenestrate"! #Bisqwit #Programming #ProgrammingPhilosophy #Tutorial #ObfuscatedCode #CProgramming
Views: 130936 Bisqwit
Why are new C++ versions created?
 
03:30
Sometimes people wonder what is the point of new C++ language releases, like C++11 or C++17. What exactly is being changed, and why? In this video I offer an unconventional, but very familiar viewpoint, that may help answering the question. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Music: Monstania :: Fron and Tia Forever, composed by Noriyuki Iwadare; played through a homebrew OPL3 synthesizer using a homebrew conversion process, detailed in this video: https://youtu.be/7IeO7CYFd9E The source code featured in this video can be downloaded at: https://bisqwit.iki.fi/jkp/cpp17constexpr/ You can contribute subtitles/captions at: https://www.youtube.com/timedtext_video?v=wrwwa68JXNk Or to any video on my channel at: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #Bisqwit #Programming #C++ #ProgrammingPhilosophy
Views: 67480 Bisqwit
Introducing Bisqwit's YouTube channel
 
01:50
I am Joel and this is my YouTube channel introduction. It gives you an idea of what kind of stuff I publish. Enable subtitles/captions! TL/DW: Programming. Topics. Gadgets. Video games. Anything that fascinates me that particular day. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ The coach is Volvo B10M-C / Lahti Eagle 560 (and it's not mine). Super Mario Bros. remix sampled from Super Mario Galaxy. The foley samples come from Euro Truck Simulator 2. (I dubbed the whole video because the 11 kHz 8-bit audio from my camera wasn't very good.) The NAO robot is from Aldebaran. More information about Christmas: https://www.youtube.com/watch?v=VGgt_dsdLWs My previous video about NAO: https://www.youtube.com/watch?v=9VtdhXH30_U Super Mario Bros. played by a computer program (BisqBot) that I made: https://www.youtube.com/watch?v=LliXpFceisU P.S. I'm quite happy at how I managed to capture good footage on my camera with both indoor and outdoor content at the same time. The resolution is not very good though, because the camera can only record 640x480 mjpeg, and I had to crop it a bit.
Views: 100975 Bisqwit
Introducing Bisqwit's YouTube channel (again)
 
01:20
I am Joel and this is my YouTube channel introduction. It gives you an idea of what kind of stuff I publish. Enable subtitles/captions! TL/DW: Programming. Topics. Gadgets. Video games. Anything that fascinates me that particular day. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ NOTE: This is a re-upload. The only difference to the version I uploaded two hours earlier is that the volume has been decreased by 6 dB to avoid clipping. Thanks Nimphious for reporting the problem. You can find the original version at: https://youtu.be/X9pG8gCAVq0 This is probably my least successful channel-intro video so far. I overestimated the lighting conditions and acoustics in the location I chose for shooting this. It looked almost like Primer before color correction. You can only do so much in postprocessing. Oh well.
Views: 160352 Bisqwit
Bisqwit's Patreon campaign video
 
01:50
I have a Patreon page at https://patreon.com/Bisqwit . Patreon is a site where you can help content creators by sending them money. I created this video for my Patreon page to explain why to become a “patron”. Thanks for watching! You can also check out https://bisqwit.iki.fi/donate.html for more methods of sending money, including PayPal. Thank you in advance!
Views: 12624 Bisqwit
C++ templates and optimizing for size
 
02:55
C++ templates are really handy. But guess what? They are not the best solution to every situation. Discover tricks to make the compiler produce more efficient & smaller code. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=rUB5Hlm9AaQ NOTES To clarify a possible misconception: C++ is firmly founded on the principle of "pay only for what you use". It's not like when you add templates to your program, BAM, it suddenly becomes a gargantuan hog. What I mean is that every time you apply a template to something, it generates a different function or a class for every different set of template parameters that you use in conjunction with that function or class. If you only use one set of template parameters, for example one type, it is bit-per-bit exactly the same outcome as if you just had one function or one class. If you use two different sets of template parameters in conjunction with that function or class, it's like you had two functions or two classes. And so on. It has a multiplicative nature. If space is a concern, you should try to make sure that one of the terms in that multiplicative expression is as small as possible. Either the number of different template instantations, or the amount of material that the template is applied to. Maybe both. The music is Over the Horizon, from Space Harrier for X68000. Source code and other download material related to this video: https://iki.fi/bisqwit/jkp/cpp_virtual_template/ #Bisqwit #Programming #Tutorial #Optimization #C++
Views: 23246 Bisqwit
World Portals - What's the big deal?
 
01:19
Many Portal 2 playing YouTubers upload videos of their maps with so called "world portals" in them (aka. linked_portal_door). I don't understand what's the big deal. Duke Nukem 3D supported non-euclidean geometry, in 1996. Here, let me show you! I just created this map in an hour or two. Sure, impossible spaces are fascinating. But it is not new. Nothing wrong with having fun, though. I still haven't figured out how to do something like this in e.g. POV-Ray.
Views: 27008 Bisqwit
How Bisqwit replies to your comments (2015 edition)
 
02:23
A public service announcement on Google+ privacy options. May contain trace amounts of hyperbole. In this video I explain the problem where people post YouTube comments, and it is impossible to answer their questions, because there is no "reply" button. I show what causes the problem and how to fix it. Unfortunately, as a video author, there's absolutely nothing I can do except to create this video to tell people about the problem. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ I hate the Google+–YouTube frankenstein abomination. It's not particularly Google+ that I hate ― in fact, I'm perfectly indifferent about Google+: if it were possible, I'd continue ignoring that it existed alltogether ― but it's the YouTube–Google+ integration that I would so rather see tossed into the nearest Aperture Science Emergency Intelligence Incinerator.
Views: 15755 Bisqwit
The Origin of Accents :: Phonetic Differences
 
02:31
Have you wondered why foreign people have trouble speaking your own language clearly? Where do accents come from? This video tries to explain it in a simple manner by indulging in a little study of phonology and orthography, using simple illustrations in English, Finnish and Japanese languages as examples. My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=SJZlIQqjVS4 or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg Music: Dual Orb :: Voyage #phonology #bisqwit #languages
Views: 14425 Bisqwit
Justified Programming — Reason Parameters That Answer “Why”
 
10:11
Programmers usually bark commands at computers. Never does the computer ask “why”, and never does the programmer explain themselves. What if we did? Annotate the purpose of your function calls. It may save your day! This is one of my few lessons that is not tied to any particular programming language. I do use C and C++ in these examples, but it would work just as well in nearly any other programming language. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles/captions at: https://www.youtube.com/timedtext_video?v=OrQ9swvm_VA Or to any video on my channel at: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg Music: - Tales of Phantasia :: Retaliation :: Motoi Sakuraba (converted into MIDI and played through OPL3 emulation through homebrew software) - Famicom Tantei Club Part II: Ushiro ni Tatsu Shōjo :: Dean’s Room :: Kenji Yamamoto (SPC-OPL3 conversion)¹ - Onita Atsushi FMW :: Staff Roll (SPC-OPL3 conversion) ¹) This is probably an adaptation from a concert/fugue/toccata/something by Bach. If you are someone who knows classical music and you recognize this song, please clarify this in the comments! You can listen to the full song at: https://www.youtube.com/watch?v=Xa61vkTf3Vw The first song can be listened here: https://www.youtube.com/watch?v=Ey10UDi1liE ERRATA There is a typo in the strchr code shown at 1:20, my bad! The (~0ul - 1) should be just ~0ul. Coincidentally it does not cause the function to return incorrect values, it just tanks the performance. Without the bug, the dummied out code is 50% faster than the short code, but with the bug, it is 50% slower instead. Note that the SIMD-optimized assembler-coded strchr in glibc for x86_64 is still almost four times faster than the corrected code. But there is also an actual bug in the strchr code on screen, that causes it to return incorrect values. Can you spot it? #Bisqwit #Programming #ProgrammingPhilosophy #SelfDocumentingCode
Views: 38700 Bisqwit
Introduction to Finnish phonology
 
09:26
Let’s study the foundations of speaking in Finnish language. Phonetics. What makes up speech? Why do Finnish people have a peculiar accent when speaking foreign languages? This video provides a quick introduction to Finnish phonology; the language spoken natively by five million people in Finland. My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=TtKmQI_prxs or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #finnish #languages #bisqwit
Views: 16578 Bisqwit
OpenGL scene in truecolor
 
01:20
This is a follow-up to the OpenGL programming example posted earlier. It contains the same scene as in https://www.youtube.com/watch?v=vkUwT9U1GzA , but now rendered in truecolor, with motion blur, in 3200x2400 resolution (so yes, this is really HD). Still with OSMesa, still with 99% the same program. I changed the PC::W and PC::H constants and changed PC::Render() to save the contents of PC::ImageBuffer[] into a file each frame. And I first rendered the whole thing with lightweight settings, moved around and saved all movements into a file. Then I changed the settings to those large-resolution ones and changed the program to load all movements from that file rather than from the keyboard and the mouse, so it replicates all my actions smoothly even while it's running at about 1 fps (or less, due to motion blurring and lzopping). The NTSC effect on the QBASIC window in which I type the message was intentionally produced as a stark contrast to the clinical high quality in the scene that follows. I actually meant to vary the saturation a lot more and do other gimmics related to bad TV transmission, but I couldn't get them right and looking good. The combination of bad video quality and an eerie music was aiming to produce an impression of a transmission from a parallel reality. The eerie part subsides gradually as the message becomes clear, having resolved completely when the actual 3D video begins. In the 3D video, some instruments of the music (which is the same as in the original OpenGL programming example video) have been octave-downshifted to produce a "different, but also the same" type of effect. I play exactly one loop of the song, and produce an end into it with Audacity magic. The ending of the video was not as precisely timed to the song's end as I hoped it would be by chance. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/
Views: 49479 Bisqwit
C++ Parameter Declaration Tutorial :: Purpose of different references
 
09:32
Reference, const reference, rvalue reference, lvalue reference, pointer, const pointer, by value, copy, move… This video explains it all. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=w1Cw3KFPh1A Mailing address:  J. YLILUOMA  P.O. Box 16  FI–04301 TUUSULA  FINLAND Acknowledgement: — Music: various :: Amachi — NostalgiaMusic.com — Music: House :: Wonder Project J :: Akihito Mori (SPC-OPL3 conversion) — SFX: Mostly from YouTube Audio Library. — Video footage contributed by s1xpence, Catsbane and Blizzardo1. SPC-OPL3 conversion refers to the homebrew process described in this video: https://youtu.be/7IeO7CYFd9E #bisqwit #cplusplus #tutorial
Views: 18149 Bisqwit
Black Mesa: Secret room under the stairs [Chapter: Questionable Ethics]
 
02:07
This (0:33 onwards) is the hidden room. I used noclip. It is the only way to reach this room. The beeps are a SSTV transmission. Part of Black Mesa ARG, in Portal style. The horizontal/vertical partitioning (visual glitch) occurs because I spawned a large quantity of flashlights to illuminate the walls. The "The Pizza is a LIE!" graffiti occurs dozens of times on a number of hidden walls throughout the game, for example inside some of those rooms you see during the tram ride in the beginning of the game. None of them are normally accessible; you have to use a map editor or the noclip cheat to see them. The part in the beginning of the video is a scripted event. You hear it happening, but don't get to see. I used noclip to witness Dr. Horn's death first-hand. The actors in the room are just placeholders, though.
Views: 8965 Bisqwit
How does PCM audio work? :: Case study and example C++ code
 
05:01
Demystifying the inner workings of PCM audio on computer. How is voice and sound stored? Downloads: https://github.com/bisqwit/speech_synth_series/tree/master/ep2-pcmaudio My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=m9qstmRvej8 or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg Audio credit: Alexander Scourby (Proverbs 31 from King James Bible) #pcmaudio #bisqwit #programming
Views: 17185 Bisqwit
Iron Sword ※ Cracking Videogame Passwords S01E13 (Wizards & Warriors II)
 
07:45
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Patreon: https://patreon.com/Bisqwit Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=5teRgdsvwEI Downloads: https://iki.fi/bisqwit/jkp2/ironswordpass.php https://iki.fi/bisqwit/jkp2/wizwar2.php #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 12918 Bisqwit
C++ for C programmers -- lesson 1 (classes, constructors, methods, templates, is it efficient?)
 
06:18
Are you familiar with C, or with languages based on C? This video gives a quick introduction to C++: a very small core set of things that are new in C++ compared to C. [Subtitles/Captions available] Topics covered, in order: - Bidirectional linked list in C - What is a class (it is a struct) - Methods - Struct is a type (typedef is not needed) - Constructing and destructing - Template classes - std::list is already in STL (C++ standard library) - performance impact (none at all) Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Things I forgot to mention: - methods (member functions) do not increase the size of the struct/class at all. They literally work just the same way as the original C code in this video works, even though they're defined in between the struct's { and }. Memory usage per class instance is not increased (and scalability is not hurt), no matter how many methods the class defines. Topics intentionally omitted for clarity and brevity, even though they would be good style for this program: - copy constructor / assign operators - member initialization in constructor - public and private - std::string rather than const char* - const references rather than T verbatim - exception safety It's been a while since I last published videos containing English speech. I think I've taken a step backwards towards robotic speech, due to lack of practice. Sorry about that. English is still not my native language! Same lesson in HTML format: https://bisqwit.iki.fi/story/howto/cpp/lesson1/
Views: 49323 Bisqwit
Family -- a song made with Scream Tracker 3.2 (composed by Joel Yliluoma)
 
02:46
This is a song I have composed and tracked using Scream Tracker 3.2 in November 1998. It is an AdLib song — all instruments are AdLib instruments. However, the audio in this video is produced with TiMiDity++. I converted the song into MIDI (the instrument titles have MIDI information) using a program I made, and played it through TiMiDiTy++. That's what you hear here. I first uploaded this video to YouTube on 2010-01-10, but I decided to publish it over eight years later, on 2018-06-23, for no specific reason.
Views: 20677 Bisqwit
Gremlins 2 ※ Cracking Videogame Passwords S01E03
 
02:20
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=iajgztvLxGc Downloads: https://bisqwit.iki.fi/jkp2/multigrep.php #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 15231 Bisqwit
Chrono Cross -- Nikki's song
 
09:14
This is a recording of the game Chrono Cross played in the emulator pSX. The recording is of the Magical Dreamers concert performance to save Marbule. Nikki is the main actor, the others are called Miki, Yu and Mi. (No, pSX does not have AVI recording function yet, but I hacked up my own. Apologies for the mono sound; I forgot to change the mencoder command from NES recordings.)
Views: 41592 Bisqwit
Testing a “150 Watt” CFL from China (and how to deal with fraudulent vendors)
 
06:11
With goods purchased from China it is very common that advertisements do not match reality. Let’s see how this compact fluorescent studio lamp (CFL) compares to how it was advertised! The video also contains some advise on how to deal with dishonest fraudulent vendors who make unsubstantiated claims about their products. My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=DkWr4sk8rq4 or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #AliExpress #Review #Bisqwit I also uploaded the video to Bilibili, a Chinese streaming service, because YouTube is censored in China: https://www.bilibili.com/video/av27986806/
Views: 25747 Bisqwit
Creating a Chip8 interpreter/emulator in C++14
 
10:51
In this tool-assisted education video I create a #Chip8 interpreter in #C++14. We overview the architecture specification document and use that to create a working emulator. Some sample games are run. Download: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/chip8/ Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles/captions at: https://www.youtube.com/timedtext_video?v=rpLoS7B6T94 Or to any video on my channel at: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg The desktop environment is Enlightenment for Linux. The editor is a custom editor that only runs in DOS. The music is from Kingyo Chuihou! Tobidase Game Gakuen, converted into OPL3 using the means described in this video: https://youtu.be/7IeO7CYFd9E You can download/listen to the song separately here: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/chip8/music.ogg NOTE: It's been brought to my attention that the document that I was reading has several misconceptions of the Chip8 architecture. Though I also read the Wikipedia article and a few other documents, there's a few things I missed. Here's a list of errors in my interpreter. Note that most of these "errors" have no practical bearing to executing pure chip8 programs, but are merely pedantic compatibility issues targeting the platform where the Chip-8 interpreter was originally released. -- I and PC are 16-bit registers, not 12. That means that the "& 0xFFF" parts in my code should not be there, or should be replaced with "& 0xFFFF". This applies also to how the carry flag is handled in the "add I, Vx" instruction. -- The memory map is 64 kilobytes, not 4 kilobytes. However, only the first 4 kilobytes are RAM. It is in fact possible to have more RAM (or less), from 2 to 32 kB. RAM is mirrored in the whole $0000-$7FFF range. A conforming implementation should perhaps use a 64-kilobyte array, and permit modifications only within the first 4 kilobytes. Ideally, part of the array should contain a verbatim copy of the Telmac 1800 ROM... -- The built-in font should not be stored in the first 4 kilobytes, but within the "ROM", which is mapped at $8000-$81FF and probably mirrored throughout $8000-$FFFF. This memory should also be non-modifiable. See http://www.chip8.com/cosmacvip/VIP_Manual.pdf for information about the exact location and layout. -- The 12-element stack should be stored at the particular address of $0FA0-$0FCF (or in an equivalent address of whichever bank is the last RAM bank) -- The 16 V registers should be stored at the particular addresses of $0FF0-$0FFF (same note as above). -- The 256-byte display memory should be stored at $0E00-$0EFF (same note as above). -- The timer registers and stack pointer should not be stored in RAM (the COSMAC VIP stores them in R8 and R2 registers respectively). -- The "sys" instruction should do emulation of RCA 1802 (COSMAC). This is deliberately left out from almost all modern Chip8 interpreters, including mine. On a similar note, the "cls" and "ret" instructions (00E0 and 00EE respectively) should be implemented as RCA 1802 code pre-initialized in those RAM addresses, and treated as the "sys" instruction instead. But then you could just create a COSMAC #emulator and forget about Chip8, as it's just a program running within the first 256 bytes of RAM and utilizing the 512-byte ROM. More information: http://datasheets.chipdb.org/RCA/MPM-201B_CDP1802_Users_Manual_Nov77.pdf
Views: 69428 Bisqwit
SIMD and Vectorization: Parallelism in C++ #1/3 (multitasking on single core)
 
12:51
Computer programs can be made faster by making them do many things simultaneously. Let’s study three categorical ways to accomplish that in GCC. In the first episode, we explore various alternative approaches to SIMD: Single Instruction, Multiple Data. As a plot device in this tool-assisted education video, a Mandelbrot fractal is rendered. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=Pc8DfEyAxzg All downloads: https://github.com/bisqwit/cpp_parallelization_examples Watch part 2 here: https://www.youtube.com/watch?v=MfEkOcMILDo Background music: — Cartooners (DOS) — Happy — Neal Vaughn (thirdparty play with ADLMIDI) Sound effects and foley are mostly from YouTube Audio Library. Some are recorded from video games like The Guardian Legend, Duck Hunt, Earthbound, and Super Mario All-Stars. #Bisqwit #Parallelism #Tutorial #Programming #SIMD #Vectorization
Views: 68594 Bisqwit
Star Control II speedrun in 35 minutes - part 1/5
 
10:01
Tool-assisted speedrun of SC2 (PC version). Detailed information: http://tasvideos.org/1493S.html Note: I used a version of SC2 that does not contain the lander bug. Summary of part 1: Harvest resources enough to purchase fuel and speed upgrades, travel to warp pod location + meet Arilou & acquire portal spawner. Apologies for the fact that the planet orbits are indiscernable in this video; Youtube video encoding completely blurs them to oblivion. To see a high quality video capture of the full movie, check out the torrent link at http://tasvideos.org/1493S.html . Part 1/5: https://www.youtube.com/watch?v=M11RkNmJBs4 Part 2/5: https://www.youtube.com/watch?v=LFRum1aeEX0 Part 3/5: https://www.youtube.com/watch?v=TJ8g8HpJYuY Part 4/5: https://www.youtube.com/watch?v=cDVKVwnBKWg Part 5/5: https://www.youtube.com/watch?v=n_kIRVEWGFE See also: UQM: Minimalist Challenge: https://www.youtube.com/playlist?list=PLzLzYGEbdY5nGU-BM5Dl83ScMIWd-W_90 UQM: No-Starbase Challenge (Practice Run): https://www.youtube.com/playlist?list=PLzLzYGEbdY5nllU_O2vkXw6-MFt-kQaeR
Views: 33280 Bisqwit
Star Control II speedrun in 35 minutes - part 2/5
 
10:00
Tool-assisted speedrun of SC2 (PC version). Detailed information: http://tasvideos.org/1493S.html Note: I used a version of SC2 that does not contain the lander bug. Summary of part 2: Acquire hyperwave caster, meet Pkunk, trick Ilwrath, re-equip ship, guide Syreen to take revenge on Mycon Part 1/5: https://www.youtube.com/watch?v=M11RkNmJBs4 Part 2/5: https://www.youtube.com/watch?v=LFRum1aeEX0 Part 3/5: https://www.youtube.com/watch?v=TJ8g8HpJYuY Part 4/5: https://www.youtube.com/watch?v=cDVKVwnBKWg Part 5/5: https://www.youtube.com/watch?v=n_kIRVEWGFE See also: UQM: Minimalist Challenge: https://www.youtube.com/playlist?list=PLzLzYGEbdY5nGU-BM5Dl83ScMIWd-W_90 UQM: No-Starbase Challenge (Practice Run): https://www.youtube.com/playlist?list=PLzLzYGEbdY5nllU_O2vkXw6-MFt-kQaeR
Views: 12018 Bisqwit
My second OpenGL project [tool-assisted C++17, SFML]
 
06:46
This is my second OpenGL exercise, ever. You can find the first one here: https://www.youtube.com/watch?v=vkUwT9U1GzA Also, yay, 75k subscribers! You are awesome! The songs are my original compositions from 1997 and 1998. The desktop environment is Enlightenment v0.22, with Elementary 1.21. I am running it in software rendering mode under a Xephyr display server running at 1080p. I was unable to get a nice framerate in 4K modes, even if using hardware rendering without X server nesting. The 3D scene in the end is hardware-rendered in 4K. The terminal is Terminology v1.3.2, and the editor is Joe v4.6. The font is Anka/Coder Bold. I normally use Xterm, but I tweaked things for this video just for fun. Source code: https://bisqwit.iki.fi/jkp/75000/ My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ #opengl #sfml #bisqwit #tool-assisted #programming
Views: 72329 Bisqwit
How to zip through walls in Mega Man 2 NES: Item-1 zip glitch guide/tutorial
 
05:23
This video explains rudimentarily what happens in the Crashman and Woodman stages in today's Rockman 2 / Mega Man 2 speedruns. Subtitles/Closed Captions available in English/French! Music credits: ⁃ Metalman theme remix: https://www.youtube.com/watch?v=Vc6SeEY8FAI ⁃ Crashman theme remix: https://www.youtube.com/watch?v=zVgdFg9jQtQ Table of contents: ‣ 0:00 Shenanigans ‣ 0:10 Greetings ‣ 0:13 Introductions ‣ 0:17 Elaborations ‣ 0:33 Item-1 Basics ‣ 1:21 Applications ‣ 1:53 Map studies ‣ 2:38 Illusions ‣ 3:34 Camera hacks ‣ 3:45 Screen edges ‣ 4:12 Long walks ‣ 4:25 Mega Man dies ‣ 4:30 Respawns ‣ 4:48 Afterwords ‣ 5:08 Recommendations ‣ 5:18 Thanks and best regards Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Note: When you get Mega Man into a wall, and you are facing right, zipping starts when you face left _without walking_. To face left without walking, you have a few options: Option 1: Throw/fire, and then turn left. This prevents Mega Man from starting walking. Option 2: Jump, and face left in a rapid and very accurate sequence. This is slightly slower, and very difficult to do. The precise frame-by-frame sequence of actions is: A, nothing, nothing, Left. Option 3: Be deep enough inside the wall that you can't simply walk out. This is only applicable in certain situations. If Mega Man is pushed out from the wall towards the left when he faces right, you weren't far enough to the right to begin with. Cheat codes/modifications used to facilitate video demonstrations: ⁃ RAM $9B ⇐ $FF (gives Item-1, Item-2 and Item-3 without having to beat respective robot masters) ⁃ RAM $A4 ⇐ $04 (Item-1 will never run out of power) ⁃ ROM $804C ⇐ $60 if $B0 (disables music, but not sound effects) ⁃ RAM $15 ⇐ $03 (camera hack: stripe ends in screen 3) ⁃ RAM $15 ⇐ $07 (camera hack: stripe ends in screen 7) ⁃ ROM $EF6A ⇐ $4C,$38,$EF (camera hack: actors will not vanish when screen scrolls horizontally) ⁃ ROM $EF60 ⇐ $18,$60 (camera hack: actors will not vanish when screen scrolls horizontally) ⁃ Level editor (camera hack: some enemies were deleted) Thanks Nameguy for the French subtitles! Click here to contribute subtitles in your language: https://www.youtube.com/timedtext_video?v=UOYyX4ajYtc
Views: 13704 Bisqwit
How fast does Bisqwit type?
 
06:30
Ever wonder how fast I type? Watch this video to see, as I use a homebrew DOS game to find out. Click “show more” to view more information. Check out the FAQ in the comment section for any questions! In the Finnish test (yes, olen suomalainen), I peaked 10mrs of 4128, with end result of 3845. (Avg. 6.41 characters per second.) In the English test, I peaked 10mrs of 3601, with end result of 3545. (Avg. 5.91 characters per second.) Note that these readings are likely very incorrect, because it is impossible to get accurate timings from a program run in DOSBox. For more details, read the FAQ in the comment section of this video. My links: Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles/captions at: https://www.youtube.com/timedtext_video?v=jnkOcAkLkBU Or to any video on my channel at: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg Here's the video that shows how I make programming videos: https://youtu.be/5Da6ZyQJjE0 Download WSpeed: https://bisqwit.iki.fi/wspeed/ It is a 16-bit DOS program. It will _not_ work in 64-bit Windows without a DOS emulator. The best way to run it would be to run it under MS-DOS (operating system) on a PC, but this is hardly feasible today for anyone. The second best way is to install DOSBox (available for many operating systems), and use that. You can run the game using DOSBox. When you launch DOSBox, you will have to ”mount” the drive or directory where you unpacked the game, and navigate to the right subdirectory using “cd” commands, and then run the game by typing its name. Aside from the “mount” command this is just basic DOS handling. The red flashing is WSpeed saying that your computer (i.e. DOSBox, if you run it under DOSBox) is too slow. If you get red flashing in the game, here’s how to fix it. By default, DOSBox emulates a 3 MHz computer, but hitting Ctrl+F12 increases the emulated CPU clock speed. But if you make the emulated CPU clock too fast, it may actually make DOSBox slow. Because of these issues, WSpeed+DOSBox is not an accurate way to measure your typing speed. I have provided it for entertainment purposes only. You can buy the same model of USB keyboard that I used, here (USA layout): https://bisqwit.iki.fi/dx/p/106619 NOTE: Clarification on my definition of “uncut”: I do alternate between different picture-in-picture set-ups, and I do swap audio between different streams, but the progression of time will be uninterrupted, and footage will be shown for every second in the order it happened and at unedited pace (starting from about 1 minute into the video). NOTE: Clarification on my definition of “blind” / “first try”: Of course I have played this game before. I was the one who created it. But it has been over 15 years. It hardly counts as “training” for the purposes of getting a good result in this video. Any other questions? Read the FAQ in the comment section. #Bisqwit #DOSGaming #HomebrewGames #Blog #FastTyping
Views: 4067197 Bisqwit
I wrote a Raytracer for DOS, 16 VGA colors
 
15:00
In this tool-assisted education video I create a raytracer from scratch. The raytracer renders in 16-color VGA palette at 640x480 resolution. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Source code: ‣ https://bisqwit.iki.fi/jkp/raytrace.cpp (only compiles in Borland C++ 3.1 and runs in DOS; this is verbatim the program that I wrote in this video) ‣ https://bisqwit.iki.fi/jkp/raytrace2.cpp (runs on most OSes, uses OpenMP thread-parallelism) ‣ https://bisqwit.iki.fi/jkp/raytrace3.cpp (runs on most OSes, uses CUDA for GPU parallelism, depends on this header file: https://bisqwit.iki.fi/jkp/helper_cuda.h) List of programs written by me that made this video possible: - ADLMIDI (This plays MIDI files through OPL3 emulation) - JAINPUT (Japanese input editor) - E.EXE (Full-screen DOS editor) - SPCPLAY (This plays SPC files, which are SNES music), however see below - New.php (With this I architected how exactly to input the code, where to resize the screen and where to scroll the window etc.) - INPUTTER (This tool ensured that the plan is followed perfectly, given the time constraints) - SPCtoMIDI (This converts log files created by SPCPLAY into MIDI files) - Firstframe.php (This rendered the various effects at 11:10 to 11:54 , after which the real rendered frames were displayed verbatim. The slowness in the beginning was how the BC++ compiled program would have appeared, but it was simulated with this PHP program.) - Animmerger (This ensured that the frames produced by Firstframe.php were indeed of the EGA palette and dithered the same way as the raytracing was) - Hudmaker (This converts raw audio and video streams and overlays graphical items, like subtitles, into it, and sends result to encoder) - Tile4 (This did the four-video inset at the end of the video. I got the idea from Freddy Wong (user:Freddiew).) List of significant programs involved that were not written by me (all but BC++ are open-source): - DOSBox and its associated utilities like "mount" - FreeDOS command prompt - Borland C++ compiler, Turbo Assembler, Turbo Link - SNES9x (I used portions of SNES9x in SPCPLAY) - MEncoder (Video+Audio Encoder; The video recorded by DOSBox was of varying FPS and of varying resolution, due to all the screenmode changes. With MEncoder I resampled them all into a common format, which was 3200x2400 120-fps RGB16 raw video.) - Lzop (I compressed raw video streams with this for intermediate storage) - GCC, GNU assembler, GNU gold (After verifying that the program _works_ on BC++, I compiled the _actual_ raytracer with this and did the actual rendering on a multicore Linux server, because raytracing is, well, quite slow) - Imagemagick (This converted 16-bit PNGs into 8-bit ones) - Audacity (I mixed audio tracks together with this tool) - Sox (I may have used it to convert WAV from/to RAW) - X264 (Video Encoder, used for the final encoding) - Oggenc (Audio Encoder, used for the final encoding) - MKVmerge (Video+Audio Multiplexer, used for the final encoding) - HDPMI32 also makes an appearance in this video, but it's a decoy, as is ADLMIDI in this video. The audio produced within DOSBox was discarded, because it was choppy. I recorded and mixed the audio separately. More source code links: ADLMIDI: https://bisqwit.iki.fi/source/adlmidi.html JAINPUT: https://bisqwit.iki.fi/source/jainput.html Animmerger: https://bisqwit.iki.fi/source/animmerger.html Hudmaker: https://bisqwit.iki.fi/source/hudmaker.html
Views: 712900 Bisqwit
Simon’s Quest ※ Cracking Videogame Passwords S01E06 (Castlevania II)
 
07:26
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=_3ve0YEQEMw Downloads: https://iki.fi/bisqwit/jkp2/simonspass.cc Additional VFX from CMStudios (cmssix.com) Additional music contributed by Matti Jokihaara Game footage is from the Castlevania Ⅱ English Retranslation and Improvement Hack by Joel Yliluoma — https://bisqwit.iki.fi/cv2fin/ Sorry about the nasal voice I was having in this video. My nose has been very congested lately. It poses some difficulty when recording. This is especially noticeable in the last 10 seconds or so. Addendum: I did not explain it in this video, but after the SUB-XOR decoding phase, the letters may not necessarily be in 0-31 range, if the password data is invalid or ABCD has been substituted with 6789. However, when the game converts the data from 5 to 8 bits, it discards any extra bits (as if an "AND #$1F" was used), so this cannot be used to break the system. #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 22348 Bisqwit
Solar Jetman ※ Cracking Videogame Passwords S01E08 ※ Old version
 
07:34
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=Ex1iFZuUdJ4 Downloads: ⁃ https://bisqwit.iki.fi/jkp2/solarpass.rs #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 10205 Bisqwit
Bisqwit’s channels, Discord server, and much more
 
05:33
Did you know I have four YouTube channels? Did you know there is a discord community around this channel? That and much more information in this video. My links: Main channel: https://youtube.com/c/Bisqwit Bisqwit’s Gaming: https://youtube.com/c/BisqwitPlays Bible with Bisqwit: https://youtube.com/c/MayimMayim Bisqwit’s extra: https://youtube.com/c/ExtraBisqwit Twitter: https://twitter.com/RealBisqwit Discord: https://discord.gg/aG4ztC4 Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=oVLwT0JiuXM or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg Music credits: — Super Genjin 2 — High Mountains — composed by Nobuyuki Nakamura — Monstania :: Fron and Tia Forever, composed by Noriyuki Iwadare; played through a homebrew OPL3 synthesizer using a homebrew conversion process, detailed in this video: https://youtu.be/7IeO7CYFd9E — That old Magic by 4mat, MOD-to-AdLib conversion
Views: 32691 Bisqwit
On C programming, switch-cases and the GOSUB
 
07:01
The switch-statement in C and C++ is an interesting construct lending itself to many unorthodox uses. In this video I explore some of those uses. I also showcase a little BASIC program (visible from 1:16 through 1:42) that I wrote in 1993. WARNING: May include trace amounts of rant! Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Third-party software information, in approximate order of appearance: • Operating system: Debian GNU/Linux ― http://debian.org/ • Graphics window system: X.Org • Window manager: Enlightenment • Window theme: 23oz (only used for window borders) • Editor: joe ― http://joe-editor.sourceforge.net/ * • Terminal: aterm ― http://www.afterstep.org/aterm.php • Terminal: xterm ― http://en.wikipedia.org/wiki/Xterm • Compiler: GCC ― http://gcc.gnu.org/ • Compiler: Clang ― http://clang.llvm.org/ • Interpreter: GW-BASIC ― http://en.wikipedia.org/wiki/GW-BASIC • Platform emulator: DOSBox ― http://www.dosbox.com/ • Window sitter: Macopix ― http://rosegray.sakura.ne.jp/macopix/index-e.html *) In most of my programming videos I use a custom editor I wrote myself for use in DOSBox. This video however was not created in DOSBox, but in a real Linux desktop, although a staged one for video making. My own editor only runs in DOS, so I used Joe here. Or more to the point, I don't use Joe in DOSBox, because it does not run in DOS. That's why I created my own editor. So in this video I used Joe, i.e. Joseph Allen's editor. Addendum: In my view, lambda functions / closures target pretty much the same goal and purpose that GOSUB does, even though it is not exactly the same. I'm glad C++ has lambda functions today. The entire source code of the dirt-dropping program (that is shown in the end of the video) is seen at 1:32.
Views: 20929 Bisqwit
Creating a Doom-style 3D engine in C
 
18:50
In this tool-assisted education video I walk through the creation of a Duke Nukem 3D style (or Doom-style) software-rendering pseudo-3D engine from scratch. It supports non-Euclidean geometry. Topics such as vector rotation and portal rendering are at the core. SUBTITLES ARE AVAILABLE. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ Contribute subtitles: https://www.youtube.com/timedtext_video?vHQYsFshbkYw or: https://www.youtube.com/timedtext_cs_panel?c=UCKTehwyGCKF-b2wo0RKwrcg&tab=2 This homebrew software-rendering pseudo-3D engine bears many similarities to Duke Nukem 3D. The geometry can be tweaked at run time without performance penalties, to create things like ceiling crushers or rotating doors. For rendering, it only supports single-color floors, walls and ceilings, with optional depth shading. Unlike Duke3D, it also requires that each sector is convex. So far this engine does not support objects or sprites. It also does not support sloped surfaces or parallax ceilings. DOWNLOAD MATERIAL: - https://iki.fi/bisqwit/jkp/portalrendering.html SUPPORT / INSTRUCTIONS: The C program must be compiled with a C compiler supporting the C99 standard. If you attempt to compile it as C++, errors will be produced. If you attempt to compile it on a C89 compiler, errors will be produced. You must compile it as C using C99 standard or newer (on GCC, use the commandline option: -std=c99 or -std=c11). You also need libSDL 1.2. SDL 2.0 will not work. Add the options printed by pkg-config sdl --libs --cflags into your compiler commandline. The BASIC program is ideally run in QBASIC or QuickBASIC 4.5. It will not work in QB64 without modifications, because QB64 does not support DEF FN. It will not work in GW-BASIC, because of the structural programming statements. Music credits in order of appearance: - Lunar: Silver Star Story - Lunar Traffic theme (Noriyuki Iwadare) - Axelay - SPIDERS (Taro Kudou) - Tales of Phantasia - Final Act (Motoi Sakuraba and Shinji Tamura) - Tales of Phantasia - Ridge Racer (Shinji Hosoe) All these video game songs have been transformed into OPL3 songs with homebrew tools and played through ADLMIDI. Sorry about the fluctuating narration volume. I recorded pretty much every sentence separately over many days, and my microphone was positioned differently at different times, and sometimes it was day, sometimes night, sometimes I had morning voice, etc. I tried to compensate with both manual volume adjustment as well as running a compression filter over it all, but it was only after publication when I noticed how uneven it still is. My typical workflow for recording the narration involves the following: 1. Watching some of the video 2. Writing into a text file what I would like to say (this file will also form the basis of closed-captioning later). Much of the text comes from the directing script that I wrote before I even began any video recording. 3. Speaking that dialog and recording using Audacity. I honestly try to speak as naturally as possible. If I stutter or mispronounce some part, as happens many _many_ MANY times with English (that whole language is a frigging tongue twister to me), I simply repeat the sentence or part of a sentence as many times as necessary until I get it right. Then I listen to it, and delete the flubbed parts until I have the best takes for that text. Typically this involves about two minutes of recording for every 40 seconds of narration. Sometimes I leave a particularly difficult part in out of spite even if it doesn't sound fluent. Unfortunately having to do the recording in this manner tends to kill natural prosody. I do not use voice synthesizers for reference. 4. If the dialog is shorter or longer than the section of video I was planning this to be narration over, adjust something. From here the editing may branch anywhere, including things like changing the text, or adjusting the playback speed/length/order for clips, or even changing the source code (which requires a new round of video recording). 5. Go ahead in the video with step 1 For the record, my native language is Finnish. It has a small set of phonemes similar to Spanish or ancient Greek, and a similar rhythm of vowels/consonants as Japanese. This background is quite a disadvantage for speaking English, considering that a person's ability to distinguish and to reproduce a language's defining traits, such as phonemes, rhythm, accent and intonation, is mostly determined by the languages they are exposed to as a toddler. So, if my bad accent disturbs your harmony, I urge you to disable the sound and use the closed captions instead.
Views: 669320 Bisqwit
I wrote an OpenGL first-person demo for DOS (256 colors, dithering, OSMesa)
 
14:57
In this tool-assisted education video I create a simple FPS style walking and jumping scene for OpenGL, with DJGPP, in DOS. In a 256 colors 320x200 VGA mode. This is my first OpenGL exercise. Apologies about some little mistakes in the program (such as reloading the textures on every frame). I noticed them when this video was already late in production, and it would take several days before the new version would be available if I were to fix them, and I'm itching to get this video out and into making the next video already, and none of the mistakes actually prevent the content being understood, so I'll leave them be. Most people don't even notice. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ I wrote a FAQ after this video was picked up on Reddit the first time in 2012. Here it is: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/opengl-example-FAQ.txt Source code and prebuilt lightmaps: (Compiles and runs on Linux): https://bisqwit.iki.fi/jutut/kuvat/programming_examples/opengl-example-source.zip (includes also a superior ellipsoid-based collision testing, and a buggy WIP for portal rendering: I'm not good with the math.) The background music is The Last Duel/The Final Decisive Battle from Lufia I/II (SNES). However, it is not played through the SPC700 (SNES audio chip), but through OPL3, the FM synthesizer in PCs. You can see my process of converting a SNES song into an FM song in this video: https://youtube.com/watch?v=7IeO7CYFd9E&feature=related #Bisqwit #3DProgramming #Dithering
Views: 650521 Bisqwit
How to Create a Compiler, part 0/5— SIDE-BY-SIDE Alternative Version
 
07:51
This is a side-by-side version of the original video that was 360°. You can find the original video at: https://youtu.be/KwpcOYKfXZc If you think the camera view takes too much room, watch this yet another alternative version instead: https://youtu.be/WI6Mb1Oh0Xs To create new behavior in programs (such as run-time conjugating of names), you must write program code. Writing program code in assembler is not always desirable, so we create languages where things can be expressed in more abstract ways. But those languages eventually have to be compiled/translated into assembler. In this video series we explore, through example, what it takes to create a compiler. My Finnish Chrono Trigger fan-translation can be found at: https://bisqwit.iki.fi/ctfin/ The translation tools I developed can be downloaded at: https://bisqwit.iki.fi/source/chronotools.html Chrono Trigger is a trademark of Square Enix. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=96XKY7IRjVM or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #Bisqwit #Compiler #Tutorial
Views: 20636 Bisqwit
3D Projections - Teaser
 
01:12
Did you know that projecting 3D graphics onto a 2D display (such as your computer monitor) is not a trivial problem? There are countless different algorithms to do that. Most of them produce similar results on small values of field-of-vision (how wide angle you can see), such as 50 to 80 degrees, but on larger widths, the differences become pronounced. Let's see how a couple of sample methods fare at 180 degree field of vision. Showcased: – Pannini projection – Mercator projection – Fisheye projection – Rectilinear projection Yes, there is a reason you generally don’t use larger FoV than 110 or at most 120 in 3D games. A bad reason! More about this coming soon. Room: © Dontnod Entertainment 2015 Music: © Joel Yliluoma 1999 Fish: © TNN/NHK SC 1994 #Bisqwit #Programming #3D #3DEngine #Projection
Views: 21803 Bisqwit
Solar Jetman ※ Cracking Videogame Passwords S01E08
 
07:33
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=6zyub-c1X3c Downloads: ⁃ https://bisqwit.iki.fi/jkp2/solarpass.rs #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 10823 Bisqwit
Replacing BIOS in a ThinkPad with GPL CoreBoot (former LinuxBios)
 
25:52
Corporations sometimes make asinine decisions that turn their customers into their enemies. One of these decisions forced me to replace the BIOS in my IBM/Lenovo ThinkPad with a free and less constrained alternative. This video documents how I did it. Thanks to Leandro Pereira, who pointed me to this guide, that I followed: https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/ Music used (in order of appearance): — Music: Energy Breaker :: Wind that Whips the Wilderness :: Yukio Nakajima :: (Converted into MIDI, played using OPL3 emulator) — Music (clip): Ma Navu (Barry & Batya Segal) — Music: Earthbound :: Monkey Maze :: Akio Ōmuri and others — Music: Final Fantasy V :: World 3 :: Nobuo Uematsu (SPC-OPL3 conversion) — Music: Varokaa heikkoa jäätä (YLE) — Music: Star Ocean :: Past Days :: Motoi Sakuraba (SPC-OPL3 conversion) — Music: Sangokushi Eiketsu Den :: Palace :: Akinaga Yoshida (SPC-OPL3 conversion) — Music: Bahamut Lagoon :: Matelite :: Noriko Matsueda (SPC-OPL3 conversion) — Music (clip): Shuva Hashem (Avraham Fried) Also sound effects from Chrono Trigger. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Steady: https://steadyhq.com/en/bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles/captions: https://www.youtube.com/timedtext_video?ref=share&v=PUaDkQFD7FE #ThinkPad #CoreBoot #BIOS
Views: 67898 Bisqwit
Primer (2004 movie) Deobfuscated (Plot Guide)
 
15:30
A day or two ago I watched Primer again. I originally watched it years ago, but I decided to watch it again. I was surprised how clear the movie seemed to me now, compared to the first watching. So clear, that I decided to make a video of it! WARNING: SPOILERS. THIS VIDEO SPOILS THE ENTIRE MOVIE "PRIMER". WATCH THE WHOLE MOVIE BEFORE WATCHING A MINUTE OF THIS VIDEO. This video explains the events of the movie from all beginnings to all ends, in a concise and clear meta-chronological order. Excerpts from the actual movie are provided for context. I hope this helps anyone who has problem understanding the complex plot of that movie. Technology explanation: -- The box transfers whatever is inside it backwards and forwards in time, between its start (point A) and its stop (point B). The objects inside can exit at any time during their ride by their own volition, but if they never make that choice, they nevertheless are automatically ejected after a random number of roundtrips averaging about 1300 rounds, and it always happens at point B. Exiting at some point in middle of A and B is extremely dangerous. -- This means that an inanimate object inserted at point A will travel back and forth an odd number of times before exiting at point B, and an inanimate object inserted at point B will travel back and forth an EVEN number of times before exiting at point B immediately after it was inserted. Both of these examples were demonstrated to Aaron in Monday. -- That's why they get fungus in the beginning: An object inserted today for 7 hours actually experiences about 1 year in the box, because the object can't exit earlier by its own volition. -- This doesn't explain why they don't get fungus inside the larger boxes. It is also worth noting that fungus does not thrive in oxygen-poor argon gas. Other notes: -- It is interesting how the device they made grew from mutual discoveries, and that originally they were aiming for something completely different (antigravity). Time travel was just a side effect. In real world, many great inventions have been discovered in a similar manner. No single inventor can claim honor for the whole end product (though they often do... *pout* Edison). It is built on small independent discoveries. -- It is also worth observing the fragile nature of the friendship between the two main guys. They keep secrets from each others. Aaron lies even to his wife about what really is making noise on his attic. And so on. And what do they use time travel for? It is a symbol of power. Men are hardwired to seek power. In terms of time travel, power is control. The farther back you can start over, the more power you have. Aaron stole Abe's position of having most power, and gave Abe an inferior one. Money is power too. The first thing they used time travel for was money. Only a passing thought was given to where the money came from. Addendums & errata *SPOILERS*: -- I wrote that the person who receives the phone call is the drugged time-travel-ignorant Aaron, but according to Carruth, it's actually Abe. -- When Abe is explaining to Aaron about fungus and time travel, it is evident that Aaron has already experienced these events before. He demonstrates prescient knowledge of the upcoming "engineers when they turn 40" joke for instance. Beginning at the first park scene, any time you see Aaron, it's an Aaron that already has traveled through the Failsafe once. -- While Aaron clearly did discover the Failsafe at Tuesday morning, it is possible he actually took the ride at some later day, not immediately. It is unexplained how he knew everything that he's telling in the phonecall. In my timeline, he doesn't know much, unless the latest Aaron tells him, but even he doesn't know yet what Abe did when he came back. -- My explanation relies on interpreting "the boxes are recyclable" in that once you have made the trip back, you can make another trip back in the same box. The note about "modular design of boxes" was unrelated. You can reuse a box many times without folding a box inside another. This means that Aaron took back just one box, not two. When Aaron made his second trip back, he reused the same box he used the first time around. In the end, there is no "third" failsafe running somewhere still carrying Aaron to the past. And when they redid the party several times, they just used the same boxes over and over again. And, I think, they could have safely opened a box to see if Granger is inside, even though Abe did not dare at that point. Once something exits at "A end", there is nothing inside the box, for it is already a new timeline. -- Any time they both travel, 2 new revisions are created. Any time their doubles travel, an infinite sequence of new revisions is created recursively. These are not explored. There's more to be said, but I hit the video description length limit of 5000 characters!
Views: 82319 Bisqwit
Q&A - NESemu1 CPU explained (1000 subscriber special!)
 
14:41
It is a special video time! This week my subscriber counter exceeded 1000, with Хозяин Снов being the 1000th. Thank you everyone! One thousand! People like milestones, so I made a special video. It also gave me a good opportunity to answer some semi-important and semi-urgent questions. More semi-important and more semi-urgent answers may be coming later, when you ask those questions. I cannot promise a schedule though. In this episode, I cover my multilingual background and explain in detail how exactly the Ins() function in my NES emulator works. If you haven't seen the emulator yet, go and watch this video: https://www.youtube.com/watch?v=y71lli8MS8s . Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ In this video, I explain *how* did I come up with the short form for the Ins() function (which was actually automatically generated from data using the means described in this video). However, I did not explain *why* I made it small. You can find _that_ explanation here: http://www.reddit.com/r/programming/comments/11au2d/a_while_back_a_fantastic_video_was_posted_of_an/c6l48cs NEW: Additionally, if you absolutely must know, I expanded the very content of the #define macro of the Ins() function and covered the 8-bit encoding that I used in detail at https://bisqwit.iki.fi/jutut/kuvat/programming_examples/nesemu1/base256-explained.txt . The background music is from One Must Fall! 2097, but with a twist! I downloaded a program that converts an MTM into a S3M, and then I created a program that converts a S3M into a multi-synthesizer MIDI suitable for playing with my ADLMIDI program, which plays MIDI using OPL3 emulation. This is thus played through FM synthesis. The original song uses PCM samples, but here you hear it in FM sound. The headset that I am using here I acquired from DealExtreme for $6.80. You can find it here: https://bisqwit.iki.fi/dx/p/6217 It is rather good quality and a lot more convenient than the Sony hand-held microphone F-V120 that I have been using previously. It takes some practise to set the microphone in the exactly right position that it doesn't record my breath and that it captures at exactly the right volume, which is why there is some clipping in the narration of the programming part in the end. The video camera is a Sony DCR-SR37 that is not actually mine. I used a single camera, a tripod mount, and no additional light sources. The color correction, subtitling and editing was performed in kdenlive, using a SSH-tunnelled X11 session. I did the initial editing in EditStudio, because the SSH-tunnel does not carry sound. The audio was finally mixed in Audacity, and the final encode (and the logo in the beginning) was performed using my Hudmaker, my own program. Currently, on most architectures, 64-bit is the largest available integer size. In this example I chose to use "72 instructions" as an example of a size that does not fit in an integer (and hence the hexadecimal numbers would not actually work without extra tricks, an example of which is shown in the very end). In the NES emulator, the number of opcodes was 259. I used 72 rather than 259 in this example, because I wanted the entire binary number to fit on the screen, for its cumbersomeness to be obvious. You might wonder why I am saving in the editor so often. In many of my longer videos, I save dangerously infrequently. The reason is that I used the save function as an intentional visual delay about 2 seconds long each, to allow time for my narration. In my production toolchain (this is a tool-assisted education video), it is currently not possible to simply do nothing for a while, so I did the saving as an idle function. For my next videos I will try to devise some less distracting delay method. The next part for Black Mesa Blind LongPlay will be coming tomorrow. After that, the schedule may be a little slower than previously because of the preparation for the Feast of Tabernacles (Leviticus 23:33-44), but I still try to release an episode at least every third or second day.
Views: 54659 Bisqwit
Spy Vs Spy (NES) -- Level 8 speedrun -- 2 minutes
 
02:11
Difficult: Level 8 (max). Completion time: 6163 frames (ingame time: 02:03, real time 1:42.72) Points of interest: * Passes through trapped rooms unharmed * Dies in one trapped room (the only alternative would be to wait until CPU walks into that room) (this is not cool) * The random number generator used by the CPU is unaffected by player's actions or lag. Note: This is not the fastest play through this map. There is a faster unassisted speedrun at Youtube, played by SirVG.
Views: 7106 Bisqwit
Offloading & CUDA: Parallelism in C++ #3/3 (also OpenMP, OpenACC, GPU & Coprocessors like Xeon Phi)
 
20:28
Computer programs can be made faster by making them do many things simultaneously. Let’s study three categorical ways to accomplish that in GCC. In the third episode, we study ways to offload code to various accelerators such as GPU on a graphics card. We also explore CUDA. The previous episode can be found at: https://www.youtube.com/watch?v=MfEkOcMILDo As a plot device in this tool-assisted education video, a Mandelbrot fractal is rendered. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ OpenMP HQ: http://www.openmp.org/ OpenACC HQ: https://www.openacc.org/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=kIA_UtdVabQ All downloads and compilation instructions: — https://github.com/bisqwit/cpp_parallelization_examples Background music: — Aoki Densetsu Shoot-bang — Game 01 — Kennosuke Suemura — Energy Breaker ­— Golden-Colored Wind — Yukio Nakajima — Tales of Phantasia ­— I Miss You — Motoi Sakuraba All music is played through OPL3 synthesis. Sound effects and foley are mostly from YouTube Audio Library. Some are recorded from video games like The Guardian Legend, Duck Hunt, Earthbound, and Super Mario All-Stars. Peter Penguin and Hazel Hopkins are characters of the Hackles webcomic which is © Drake Emko & Jen Brodzik. You can read it at: http://hackles.org/cgi-bin/archives.pl?request=1 #Bisqwit #Parallelism #Tutorial #Programming #Offloading #CUDA #NVidia #VectorCalculation
Views: 32418 Bisqwit
Threads/Multiple cores: Parallelism in C++ #2/3 (also hyperthreading)
 
12:13
Computer programs can be made faster by making them do many things simultaneously. Let’s study three categorical ways to accomplish that in GCC. In the second episode, we explore various alternative approaches to threads. The first episode can be found at: https://www.youtube.com/watch?v=Pc8DfEyAxzg The next episode: https://www.youtube.com/watch?v=kIA_UtdVabQ As a plot device in this tool-assisted education video, a Mandelbrot fractal is rendered. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ What every programmer must know about memory: https://lwn.net/Articles/250967/ Bisqwit’s guide to OpenMP: https://bisqwit.iki.fi/story/howto/openmp/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=MfEkOcMILDo All downloads: — https://github.com/bisqwit/cpp_parallelization_examples Sorry about some of the botched pronunciations in the contributor thanks list, or about breaking some names into two parts! It was my first time using a teleprompter, and this particular software had a bug where it might wrap lines in such way that it reorders words. Background music: — Yoshi’s Island (SNES), Flower Garden All music is played through OPL3 synthesis. Sound effects and foley are mostly from YouTube Audio Library. Some are recorded from video games like The Guardian Legend, Duck Hunt, Earthbound, and Super Mario All-Stars. #Bisqwit #Parallelism #Tutorial #Programming #ThreadProgramming #MultiThreading
Views: 25742 Bisqwit
Portal 2 custom map "Linearity"
 
03:10
I made a custom puzzle in Portal 2: https://steamcommunity.com/sharedfiles/filedetails/?id=147176756 This is an example walk-through of that map. Note that this is a SPOILER to the solution. It includes puzzle elements not normally available in the PTi editor: doors, cameras, the mashy spike plate, GLaDOs's speech, and warm light panels. These are made possible due to three PTi MODs that I used: HMW-mod, BEE 1.05 mod, and styles mod. I wanted this puzzle to be completely one-dimensional originally, but in the end that goal did not completely come into fruition. I found out however that such a cramped setting, along with the fearsome element of the crusher, really does bring some stress into the play, that even a simple solution may appear complicated and difficult to discover. What you see here is the intended solution for this puzzle.
Views: 10147 Bisqwit
Mega Man 2 ※ Cracking Videogame Passwords S01E01
 
03:55
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=0eQyYrSQPew Fun fact: The minimum number of grid cells that could encode all possible states supported by the game's password scheme is eleven: ceil(log2(1280)). Any more would be for redundancy. #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 58795 Bisqwit
Creating music in one line of C code
 
01:46
In 1999 I experimented a bit with creating a minimal C program that can create music. Here is the source code and the music. Admittedly it is more than 1 line (four 80-character lines to be precise in its original layout, including comments; seven 40-character lines in this updated format, excluding comments), but both can be formatted into one line each less than 256 characters (with comments removed). Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ I posted this because there is currently an ongoing challenge on creating entertaining music with C oneliners. You can see examples here: - http://countercomplex.blogspot.com/2011/06/16-byte-frontier-extreme-results-from.html (background) - https://youtube.com/watch?v=GtQdIYUtAHg&feature=related (viznut's round 1) - https://youtube.com/watch?v=qlrs2Vorw2Y&feature=related (viznut's round 2) - https://www.youtube.com/watch?v=tCRPUv8V22o (viznut’s round 3) - http://wurstcaptures.untergrund.net/music/ (online test facility, limited syntax) - http://tasvideos.org/forum/p/289092#289092 (TASvideos thread and more links) P.S. Creating programming videos that can not only be enjoyed perfectly in 240p, but also in 120p, is not an easy task. 90p is still legible if you use a lanczos rescaler (bicubic blurs it too much). Explanation of the second code: The song is 64 frames long. The for-loop C counts frames from 0..63, wrapping back to 0 after 63. On each frame, a note may be triggered or not triggered. o will be assigned the frequency value for channel 1 by taking the song character corresponding to C/8, and calculating 99*pow(89/84, n) where n = 99 minus the character. 89/84 happens to be a very good approximation of 2^(1/12), the ratio between the frequencies of two successive half-steps in equal temperament tuning. The actual exponentiation is performed by multiplying o with 89/84 for each loop iteration where the decreasing k still is larger than the value of the character. f will be assigned similarly from channel 2 (the index is now C rather than C/8). Then, 8-bit PCM samples will be produced for 999+99*(C&2) times. The alternating *99*2 is there to bring some swing to the rhythm: each frame is alternatingly either 999 or 1197 samples long, with the alternation switching every two frames. The samples are generated using a formula s*(a(f) + b(o)), where s is the PCM sample counter (which acts as amplitude), a(f) is a formula that generates a simple waveform for channel 2, and b(o) is a formula that generates a simple waveform for channel 1. The constant 776 in the formula is used to compare the frequency to the frequency corresponding to the character '%', which stands for silence. Each PCM sample is a 8-bit integer, which represents the air pressure that varies 8000 times in a second. Periodical variations in the pressure are perceived by ears as sound; the more frequently (faster) it varies, the higher the perceived pitch is. The actual value of the pressure is irrelevant; the ear only perceives the changes, not the values themselves. However, the larger the variations are, the louder the perceived volume is.The speaker attached to the computer is a device which attempts to reproduce the air pressures by moving an electromagnet-driven membrane back and forth, in order to produce the sounds. This program produces the PCM samples with the mathematical formula, and then outputs them by simply issuing the putchar() function. If the program was run as-is, it would appear to spew garbage to the display. The proper way is to redirect its output into the speaker. In Linux/Solaris systems with Open Sound System, redirecting the audio to /dev/dsp accomplishes that task. On other systems, you may need to pass the audio data to another program, such as aplay or MPlayer, either directly through a pipe, or through an intermediate temporary file. On Cygwin/Mingw for instance, you can do this: ./sig2a.exe | mplayer -demuxer rawaudio -rawaudio rate=8000:channels=1:samplesize=1 - 8-bit 8000 Hz audio is rather low quality; today the most commonly used type of audio definition is 16-bit 44100 Hz, which means that it has 2^16 (65536) distinct pressure levels that can be varied at most 44100 times in a second. An 8-bit integer can represent only 2×2×2×2×2×2×2×2, that is 2^8 = 256 distinct pressure levels.
Views: 52988 Bisqwit
How to use threads in C++11 (multitasking, mutual exclusion, etc.)
 
23:29
In this tool-assisted education video I explain the tools that C++11 introduced for creating multi-threaded programs. We will study each concept individually from #threads to condition variables and from futures to promises. ENGLISH-LANGUAGE CLOSED CAPTIONS ARE AVAILABLE. The source code and other materials can be DOWNLOADed here: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/cpp_thread_tutorial/ You can contribute subtitle translations at: https://www.youtube.com/timedtext_video?v=_z-RS0rXg9s If you want to help me with money, I have a Patreon page at: https://www.patreon.com/Bisqwit Music used in the video, in order of appearance: – Wizardry V :: Artifacts (Kentarou Haneda) – Star Ocean :: Calm Time (Motoi Sakuraba) – Wonder Project J :: House (Akihito Mori) All music was converted into MIDI and played using OPL3 simulation with homebrew software. The exact process is described here: https://www.youtube.com/watch?v=7IeO7CYFd9E Footage music (also played through homebrew software): – Cave Story :: Geothermal Cameras used: Canon EOS 1200D, Canon PowerShot SX110IS Lens: Tokina AT-X PRO 11-16mm F2.8 DX Programming footage in: DOSBox Resampling with: ffmpeg Video editing in: kdenlive Audio editing in: audacity & kdenlive Muxing in: mkvmerge Production dates: 2015-12-03 through 2016-01-22 Desktop computer is: Raspberry Pi Secret code: OwjQkUo9Bgk Compilers used: GCC 5.3.1 Robot is: Nao V4 If anything in the video requires clarification, please write a comment. I try to reply to every unique comment that contains a question addressed to me. Please make sure your privacy settings (possibly found as far as in Google+) will not prevent me from actually replying. The editor used in the video, with Mario and all, is a 16-bit homebrew editor that only runs in 16-bit DOS. You can download it at the download page, but note that it is only designed for video making. It’s not meant for actual use, but it does work and is largely modelled after Joe. Joseph Allen’s “Joe” editor makes an appearance at 21:11. You can find Joe at: http://joe-editor.sourceforge.net/ . It is my primary editing environment, both in Linux and in Cygwin. I am not using any other IDE. Linux is used under DOSBox (for purpose of video production only) by using a modified version of DOSBox that provides forkpty() functions as DOS interrupts, and a homebrew terminal program running in DOS, that supports xterm-256color escapes. The terminal program is useless without the patched version of DOSBox (and furthermore this patch will only work in Linux). Nonetheless you can find both on the download page, linked above. Reference material used and highly recommended: http://en.cppreference.com/w/cpp/thread/thread http://en.cppreference.com/w/cpp/thread/future http://en.cppreference.com/w/cpp/thread/async http://en.cppreference.com/w/cpp/thread/mutex http://en.cppreference.com/w/cpp/thread/unique_lock http://en.cppreference.com/w/cpp/thread/condition_variable http://en.cppreference.com/w/cpp/thread/promise http://en.cppreference.com/w/cpp/string/basic_string/operator%22%22s About author: Joel Yliluoma is an author who publishes videos in YouTube under the name “Bisqwit”, ranging diverse topics from programming to gaming and from cats to religion. He has been programming since 1992, and for most years since then, it has been his primary, sometimes only hobby. Though most of his professional life has been spent developing business web applications, he prefers working with low level code targeting older systems. In 2014―2015 he was also a coach driver working for Savonlinja in Finland. He is also known for founding TASVideos.org, a website and community centered around making “tool-assisted” speedruns of classic video games. Outside Internet, he is known for teaching Israeli folk dance in Finland. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ The source code and other materials can be DOWNLOADed here: https://bisqwit.iki.fi/jutut/kuvat/programming_examples/cpp_thread_tutorial/ You can contribute subtitle translations at: https://www.youtube.com/timedtext_video?v=_z-RS0rXg9s If you want to help me with money, I have a Patreon page at: https://www.patreon.com/Bisqwit Note to self: Possible topics for a hypothetical second episode: – Thread-local variables – Memory order declarations – What the standard says about memory interactions between threads – What the standard guarantees about when variable changes are committed into RAM – Clustering – CPU affinity #Bisqwit #ThreadProgramming #Tutorial #Parallelism #Programming
Views: 75041 Bisqwit
Parallelism in C++ #4/3: Some afterwords
 
11:29
Computer programs can be made faster by making them do many things simultaneously. In the three episodes, we studied three categorical ways to accomplish that in GCC. In this extra episode I address some feedback from the series. Filmed in a location. Sadly my nice lighting conditions went away five minutes after I started filming (sun position shifted), so I had to compensate in postprocess, to not a perfect result. And I forgot to de-dust my teleprompter and I should not have used a wide-angle lens. And my tiny aliexpress flat-screen HDMI display that I used as teleprompter died (flat-flex cable suffered a cut) so I had to use the cellphone instead. The previous episode can be found at: https://www.youtube.com/watch?v=kIA_UtdVabQ Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ OpenMP HQ: http://www.openmp.org/ OpenACC HQ: https://www.openacc.org/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=pCoxpKTmykA All downloads and compilation instructions: — https://github.com/bisqwit/cpp_parallelization_examples. #Bisqwit #Parallelism #Tutorial #Programming
Views: 23271 Bisqwit
Mega Man 3 ※ Cracking Videogame Passwords S01E02
 
05:21
In the advent of 1990 I played NES games a lot. Knowing nothing about programming but being geekish by nature, I obsessed over cracking the password systems in those games. In this series we will study some of these systems. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=QnRcAyYmL0U Fun fact: The minimum number of grid cells that could encode all possible states supported by the game's password scheme is eight: ceil(log3(2720)). Any more would be for redundancy. #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 23111 Bisqwit