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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ Source code: http://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: 84522 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: http://youtu.be/7IeO7CYFd9E The source code featured in this video can be downloaded at: http://bisqwit.iki.fi/jkp/cpp17constexpr/ You can contribute subtitles/captions at: http://www.youtube.com/timedtext_video?v=wrwwa68JXNk Or to any video on my channel at: http://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #Bisqwit #Programming #C++ #ProgrammingPhilosophy
Views: 55179 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: 76876 Bisqwit
How Bisqwit replies to your comments
 
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: 13324 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 http://bisqwit.iki.fi/donate.html for more methods of sending money, including PayPal. Thank you in advance!
Views: 10148 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: 11902 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: http://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: 103269 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: 19746 Bisqwit
Solar Jetman ※ Cracking Videogame Passwords S01E08
 
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=Ex1iFZuUdJ4 Downloads: ⁃ http://bisqwit.iki.fi/jkp2/solarpass.rs #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 8982 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=rUB5Hlm9AaQ NOTES Case ranges are not part of C++ language, but are supported as a very useful extension by at least GCC, Clang, ICC, and Solaris Studio. 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 code size & speed calculations were performed with GCC 6.2.1 on x86_64, with Xeon X5460 (3.16 GHz) on Debian Testing. The precise size measurements were acquired by extracting the .text and .rodata sections from the executables with "objcopy -Obinary -j.text -j.rodata" to get around padding issues. I forgot to update the temperature meter. Sorry about that! The music is Over the Horizon, from Space Harrier for X68000. I don't use an IDE. To find out what the editor is, watch more of my videos and read comments. I have explained it only maybe fifty times. Source code and other download material related to this video: http://iki.fi/bisqwit/jkp/cpp_virtual_template/ #Bisqwit #Programming #Tutorial #Optimization #C++
Views: 19884 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 http://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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/
Views: 41144 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: 39734 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: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/chip8/ Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles/captions at: http://www.youtube.com/timedtext_video?v=rpLoS7B6T94 Or to any video on my channel at: http://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: http://youtu.be/7IeO7CYFd9E You can download/listen to the song separately here: http://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: 50835 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: 7733 Bisqwit
Star Control II speedrun in 35 minutes - part 3/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 3/5: Meet Orz, loot Taalo shield, trick and fight Mycon and take Sun Device, trick Druuge and acquire tons of fuel, massacre Umgah zombies and pick up Talking Pet, loot Thraddash treasure, befriend Supox and Utwig Part 1/5: http://www.youtube.com/watch?v=M11RkNmJBs4 Part 2/5: http://www.youtube.com/watch?v=LFRum1aeEX0 Part 3/5: http://www.youtube.com/watch?v=TJ8g8HpJYuY Part 4/5: http://www.youtube.com/watch?v=cDVKVwnBKWg Part 5/5: http://www.youtube.com/watch?v=n_kIRVEWGFE See also: UQM: Minimalist Challenge: http://www.youtube.com/playlist?list=PLzLzYGEbdY5nGU-BM5Dl83ScMIWd-W_90 UQM: No-Starbase Challenge (Practice Run): http://www.youtube.com/playlist?list=PLzLzYGEbdY5nllU_O2vkXw6-MFt-kQaeR
Views: 8767 Bisqwit
Q&A - NESemu1 CPU explained (1000 subscriber special!)
 
11:18
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: http://www.youtube.com/watch?v=y71lli8MS8s . Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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 http://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: http://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: 46169 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. Note: We actually use 230 V here in Finland (and in the rest of EU). I just used 220 V to simplify things for the Chinese people in case they watch the video. Yes, the actual power rating of this lamp is even lower. The formula V×I gives the _apparent_ power for the lamp, but the _active_ power can be much lower due to capacitive/inductive load. For example, I have here some LED lamps purchased from Finland. Finnish lamps always list both the wattage and the current rating. Some of these LED lamps say e.g. 20W 190mA. 0.19×230V gives the apparent power of 43.7W, but the real working power of the lamp is probably that 20W that the manufacturer (Airam) printed. In other words, this CFL is not even a 75W. It’s probably closer to 50W, or even lower. In this light (pun intended), the manufacturer’s reading of 175W and their formula of 1W=5W may start making sense. This would put the lamp’s actual power at 35W. Regardless, it is false and misleading advertising. You can read more at: https://en.wikipedia.org/wiki/AC_power#Apparent_power I used classical three-point lighting in this video, except instead of a backlight I used a rimlight. The quality difference between this and my Lonabot rant is astounding. The fill-light, as far away as possible (~2½m), was a softbox containing two of these Kailin 5500K lamps; the key light, a bit closer, was an assortment of different lamps in a softbox (average around 4400K), and the rim light is a 40W cold UFO: https://www.aliexpress.com/item/UFO/32801718964.html . I used a paper envelope to partially block the UFO lamp from illuminating the backdrop. There was also some ambient daylight through the closed window blinds. No postprocessing was done to video colors. There was just one camera, on a tripod, and the camera was in automatic color balance mode at constant manual zoom & focus. The recording session was about 40 minutes long, interrupted about seven times by an airplane, and the editing took maybe six hours. 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: 10289 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=iajgztvLxGc Downloads: http://bisqwit.iki.fi/jkp2/multigrep.php #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 11576 Bisqwit
Halfway Point [QBasic demo to celebrate 50000 subscribers]
 
05:33
I have been observing a pattern where right as I am about to hit a round number in the subscribers count, I get a spike of more views & subscribers than usual. Only this time it doesn’t seem be happening. Oh well. Can’t have fun every week! Here’s a little something to celebrate the moment (50000 subscribers) anyway. Huge thanks to everyone who has contributed towards this number! Here’s hoping for another 50k :-) The video is not sped up in any manner. However, I did design and test the program before starting recording the video. The whole video took about 4 hours to produce and was pretty much done at moment’s inspiration: 2 hours of programming & testing, 5 minutes of recording, 1 hour of encoding for YouTube publication, 15 minutes of uploading, and assorted time writing the description, captions etc. Because it was recorded using OBS (desktop recorder) and not using DOSBox’s built-in recorder, the video quality is unfortunately not as sharp as you are used to. If I used DOSBox’s built-in recorder, I could not have synced the microphone sound to the video because DOSBox has an internal clock that is separate from the host (real) clock. Nevertheless, I upscaled it to 4K so that people, who do have the bandwidth, will not get any extra blurring caused by lossy bitrates. Unfortunately slight buffering / lag in OBS caused a small pause in the middle of the video. The plasma effect in the background is generated using the diamond-square algorithm. I have usually seen it used recursively (for example in Fractint), but I did it iteratively here instead. I used this tutorial to do it: https://www.bluh.org/code-the-diamond-square-algorithm/ My links: Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit Patreon: https://patreon.com/Bisqwit (Other options at https://bisqwit.iki.fi/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: https://www.youtube.com/timedtext_video?ref=share&v=dNZcd9wr_Bc or to any of my videos: https://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg
Views: 14810 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: http://bisqwit.iki.fi/story/howto/cpp/lesson1/
Views: 38243 Bisqwit
A brief intermission
 
03:23
It’s time to thank some generous contributors! If you would like to join this group, consider becoming my supporter at Liberapay: https://liberapay.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html). Twitter: https://twitter.com/RealBisqwit Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ Sorry if I forgot to mention your name! And if I mispronounced your name, I meant nothing bad by it. Foreign names are difficult. Thanks for your support!
Views: 8724 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: http://www.youtube.com/watch?v=M11RkNmJBs4 Part 2/5: http://www.youtube.com/watch?v=LFRum1aeEX0 Part 3/5: http://www.youtube.com/watch?v=TJ8g8HpJYuY Part 4/5: http://www.youtube.com/watch?v=cDVKVwnBKWg Part 5/5: http://www.youtube.com/watch?v=n_kIRVEWGFE See also: UQM: Minimalist Challenge: http://www.youtube.com/playlist?list=PLzLzYGEbdY5nGU-BM5Dl83ScMIWd-W_90 UQM: No-Starbase Challenge (Practice Run): http://www.youtube.com/playlist?list=PLzLzYGEbdY5nllU_O2vkXw6-MFt-kQaeR
Views: 31292 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://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: 37307 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: 25342 Bisqwit
Portal 2 custom map "The Twist" Walkthrough
 
12:30
Warp and I made a custom puzzle in Portal 2: http://steamcommunity.com/sharedfiles/filedetails/?id=230094432 This is an example walk-through of that map. Note that this is a SPOILER to the solution. Walkthrough requested by Akai Koru. See also: Behind the scenes video: http://youtu.be/MtHdpU1JIio
Views: 3226 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: http://www.youtube.com/timedtext_video?v=UOYyX4ajYtc
Views: 12277 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: http://bisqwit.iki.fi/ctfin/ The translation tools I developed can be downloaded at: http://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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=96XKY7IRjVM or to any of my videos: http://www.youtube.com/timedtext_cs_panel?tab=2&c=UCKTehwyGCKF-b2wo0RKwrcg #Bisqwit #Compiler #Tutorial
Views: 14927 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=_3ve0YEQEMw Downloads: http://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 — http://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: 17913 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. The basic algorithm is this: For each pixel, assign z as a complex number coordinate corresponding to that pixel. Assign c := z. Then, recalculate c’ := c² + z as many times as necessary until either |c| ≥ threshold, or iteration count is exceeded. The iteration count is then converted into a color using an arbitrary formula, and the color is rendered a single pixel. The escape threshold used was, 6 for smooth colors to work nicely, and the iteration limit was 8000. The rendering resolution was 4K (3840x2160). All tests were performed using these same parameters, using code compiled with GCC 7.1.0 on Intel E3-1281-v3 with 1616 MHz DDR3 memory. This is a Haswell CPU, so it has AVX2. CPUs made with the upcoming Cannonlake process will have AVX-512 (aka. AVX 3.2), which unfortunately didn’t make it into Kaby Lake (which is essentially identical to Skylake). The AMD Ryzen also has AVX2. Some jitter in the performance graphs is explained by background processes like SSH. The following optimizations were added to the iteration algorithm before any parallelization venues were explored: — Periodicity checking: Check whether the value of c’ matches an earlier recorded value. If it does, terminate loop because this value will never escape. Values are recorded whenever the number of remaining iterations is a power of two. ­— Check whether z belongs inside the main cardioid or the largest circle attached to it. If it does, set remaining iteration count to zero straight away. — Write the iteration loop in such manner that minimizes the number of branches. — Automatically enable/disable periodicity checking for the next frame depending on whether at least 0.1 % of the pixels got the maximum iteration count. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://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: 39933 Bisqwit
OpenGL programming, simple FPS style walking scene (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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ I wrote a FAQ after this video was picked up on Reddit the first time in 2012. Here it is: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/opengl-example-FAQ.txt Source code and prebuilt lightmaps: (Compiles and runs on Linux): http://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: http://youtube.com/watch?v=7IeO7CYFd9E&feature=related #Bisqwit #3DProgramming #Dithering
Views: 329772 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://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: 15408 Bisqwit
River City Ransom ※ Cracking Videogame Passwords S01E09 / ダウンタウン熱血物語
 
11:41
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=cDvHy4RtAek Downloads: http://bisqwit.iki.fi/jkp2/rcrpass.cc Note: It is possible to generate encryption keys that result in passwords that have letters greater than ź (#113) — in fact full 0–127 range can be generated, but there is no way to input these letters. The maximum letter than can be input is #113. The game itself only generates passwords that contain letters in range 0–63. An example of a valid (inputtable) password that contains letters that have a higher value than 63: V́rÍX́T́h́F́ǵt́ŕẂ Íźźh́ÝQ́B́9ŚĆÍ ÓD́ǴH́X́ÓḰJ́Íý6 Note that after the XOR decryption, all cells are reduced into 6-bit range, so the range rule discussed at 3:24 is not broken. #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 55056 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ Contribute subtitles: http://www.youtube.com/timedtext_video?vHQYsFshbkYw or: http://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: - http://iki.fi/bisqwit/jkp/portalrendering.html SUPPORT / INSTRUCTIONS: The C program must be compiled with a C compiler supporting the C11 standard. If you attempt to compile it as C++, errors will be produced. If you attempt to compile it on a C98/C03 compiler, errors will be produced. You must compile it as C using C11 standard or newer (on GCC, use the commandline option: -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: 513624 Bisqwit
The Guardian Legend ※ Cracking Videogame Passwords S01E10
 
13:51
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=9c848FjqUmI Downloads: http://iki.fi/bisqwit/jkp2/guardicpass.cc Note: You may notice an unusual number of various animated transitions between slides in this episode. This is because by trial and error, I noticed that it’s the only way to prevent Melt from making a broken H.264 encoding with horrible glitch visual artifacts and libavcodec errors in stderr when decoding. My guess it’s about H.264 level limits or something. Note 2: I derped in the video regarding the order of the ADC instructions. In the video I suggest that the ordering 23,0,1,2,…,19,20,21 does not work but 0,1,2,…,19,20,21,23 works. In fact, both are wrong. It should be 21,20,19,…,2,1,0,23. This is fixed in the downloadable source code. As annotations are no longer available (without removing the video-end screen links), I put this information here in the video description instead. #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 15523 Bisqwit
Bomberman ※ Cracking Videogame Passwords S01E07
 
08:59
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=PPfPmP44-r8 Downloads: http://bisqwit.iki.fi/jkp2/bomberpass.cc #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 11927 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: 77566 Bisqwit
Creating a raytracer for DOS, in 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ Source code: ‣ http://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) ‣ http://bisqwit.iki.fi/jkp/raytrace2.cpp (runs on most OSes, uses OpenMP thread-parallelism) ‣ http://bisqwit.iki.fi/jkp/raytrace3.cpp (runs on most OSes, uses CUDA for GPU parallelism, depends on this header file: http://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: http://bisqwit.iki.fi/source/adlmidi.html JAINPUT: http://bisqwit.iki.fi/source/jainput.html Animmerger: http://bisqwit.iki.fi/source/animmerger.html Hudmaker: http://bisqwit.iki.fi/source/hudmaker.html
Views: 111940 Bisqwit
Bubble Bobble ※ Cracking Videogame Passwords S01E04
 
07:38
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. WARNING: Do not watch this video in a car. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=PIu9J_CD818 Downloads: http://bisqwit.iki.fi/jkp2/bubbob-password.php #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 18729 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles/captions at: http://www.youtube.com/timedtext_video?v=OrQ9swvm_VA Or to any video on my channel at: http://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: 27315 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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://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: 17720 Bisqwit
Punch-Out‼ ※ Cracking Videogame Passwords S01E11
 
06:31
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=ap1YL_kGGlg Downloads: -- http://iki.fi/bisqwit/jkp2/punchout.js -- The GitHub project page: https://github.com/bisqwit/password_codecs #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 26548 Bisqwit
Tandy 1000 and 3-channel PC speaker
 
06:25
While I did know that Tandy 1000 had a 3-channel PC speaker, I did not know that it also has a noise channel. I discovered this just a few days ago. If you do not know Finnish, I suggest you click the [CC] icon to enable subtitles. I tried speaking the intro in English first, but after a few experiments I found out that I can achieve a more natural tone of speaking with significantly less effort by speaking in my native language. It's still not natural, because I am reading from a script and I am feigning fascination, but it is a lot better than it would have been in English. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ Technical bits: - All video editing, aside from encodings done with MEncoder, was done with my custom C++ and PHP programs. I do not own a copy of Adobe premiere or any other video editing software that may or may not be commercial. Such video editing includes the purple subtitles, the testcard in the beginning, the floating Tandy 1000 image, and the inset videos from Stella (Atari 2600 emulator). Stella is available at http://stella.sourceforge.net/ and MEncoder is available at: http://www.mplayerhq.hu/ - All audio postprocessing (mixing, mainly) was done with Audacity, which is free software and available at: http://audacity.sourceforge.net/ - The Debian GNU/Linux desktop shown in the beginning has IceWM with my custom theme. You can also see the theme in my development screenshots for Tales of Phantasia translation at: http://bisqbot.stc.cx/img/top/indexold.php However, this particular desktop was a mock-up 640x480 desktop for purposes of recording. - The desktop background image is a screenshot from the Hikaru no Go anime, cropped, scaled into 320x240, quantized and dithered using animmerger, and then upscaled into 640x480. Animmerger is one of my creations and is available at: http://bisqwit.iki.fi/source/animmerger.html - The syntax highlighting program that I use in DOSBox for GW-BASIC is created by me and is available at: http://bisqwit.iki.fi/source/synhili.html This GW-BASIC program plays the Mega Man 2 theme music from the Wily stages. The other prominent background music is from Betrayal of Krondor, played using my OPL3 MIDI player which is available at: http://bisqwit.iki.fi/source/adlmidi.html The GW-BASIC source code that I wrote in this video can be read and downloaded here: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/noise.html . Aside from added newlines and a warning message for QBasic users, it is the very same file as shown saved in the video.
Views: 7734 Bisqwit
Creating a NES emulator in C++11 (PART 1/2)
 
15:04
In this tool-assisted education video I create a NES emulator with C++0x. ENABLE CAPTIONS! The emulator is very accurate, and sort-of portable; it compiles on any architecture that support libSDL, but it outputs audio through an external program and reads joypad input from a file. This video is part 1/2. -- Part 1 ( http://youtu.be/y71lli8MS8s ): Creating the emulator. -- Part 2 ( http://youtu.be/XZWw745wPXY ): Compiling and running. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ The source code is about 940 lines in total. Download & FAQ & resources: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/nesemu1/ Approximate count of lines of code per topic, in the source code: - 20 lines, CPU: Declarations (registers, flags and internal memory) - 100 lines, CPU: Interpreting and executing CPU opcodes & signals - 100 lines, CPU&GamePak: Memory mapping (iNES mappers 0,1,2,3,7 are supported) - 40 lines, PPU: Declarations (registers and emulator-specific status variables) - 50 lines, PPU: Memory mapping and I/O - 180 lines, PPU: Rendering and timing control - 30 lines, PPU & IO: Joypad updating (PPU provides the timing for input-file access) - 40 lines, PPU & IO: Color NTSC emulation (converting NES colors into RGB through NTSC modem) - 15 lines, IO: libSDL initialization and rendering - 35 lines, main&IO: ROM loading from file, initialization and emulation loop - 200 lines, APU: Sound emulation (of which 40 lines are because of DMC/DPCM support) - 130 lines, (other, such as comments, and inaccuracies in the above numbers) Check out MaiZure’s excellent walkthrough of the source code of the emulator from this video! http://www.maizure.org/projects/decoded-bisqwit-nes-emulator/ Background music: Jinguji detective series. It was difficult to choose. I wanted good NES music, but I did not want it to too recognizable. I intended to convert something, but I had already spent months on this video... It was getting late. Because of the 15 minute limit that YouTube was imposing on my account when I made this video, I had to develop many techniques to shorten the code dramatically. I also had to type it very quickly… And I had to split the actual demonstration into a second video. I use C++11 exclusive techniques extensively in the code. I am particularly proud of the CPU emulator. It is cycle and memory access accurate, and feature-complete. It is not very slow, either. It is only 100 lines long, thanks to a number of clever ideas. I thank byuu for a particular idea that helped make it horizontally shorter. Each if() in ins() is completely parsed and evaluated at compile-time. Effectively the compiler synthesizes 259 distinct ins() functions, each performing only the particular opcode's worth of work. I architected all the components in as close conformance as I could to whatever documentation I found on nesdev.com regarding how they work. There may be a few minor shortcuts that I took in order to avoid the trap of investing 90 % of source code to fix a problem that affects 10 % of games. In design, my primary guideline was that the _hardware_ was always designed for simplicity (with regards to chipspace consumption). Most compact design that gets the work done. This means that any extra-ordinary complex behavior and myriad details by the hardware arises from simple design. I always tried to replicate that simplicity in my emulator. I think I managed quite well in that regard. It is not perfect though: It does not pass _all_ tests by Blargg, and some games that should run, outright crash at start. But the compatibility according to my tests is still very high, and interestingly, many TASes made with FCEUX run also on my emulator. Note that creating an emulator is perfectly legal. I wrote all the code from scratch; it comes from my mind, and is therefore entirely my copyright; it is not anyone else's copyright. I believe that programming is art, and my code is my means of expressing myself. There exists no legislation that prohibits anyone from e.g. printing this source code on a t-shirt (assuming that *I* gave permission to that). I am also not selling this as a product, i.e. even in the dystopian event that I should happen to be using algorithmic methods that someone else has previously patented against every notion of conscience and wisdom, I am still not infringing on any patents. Or so I believe.
Views: 239274 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. The basic algorithm is this: For each pixel, assign z as a complex number coordinate corresponding to that pixel. Assign c := z. Then, recalculate c’ := c² + z as many times as necessary until either |c| ≥ threshold, or iteration count is exceeded. The iteration count is then converted into a color using an arbitrary formula, and the color is rendered a single pixel. The escape threshold used was, 6 for smooth colors to work nicely, and the iteration limit was 8000. The rendering resolution was 4K (3840x2160). All tests were performed using these same parameters, using code compiled with GCC 7.1.0 on Intel E3-1281-v3 (Haswell) with 1616 MHz DDR3 memory. The following optimizations were added to the iteration algorithm before any parallelization venues were explored: — Periodicity checking: Check whether the value of c’ matches an earlier recorded value. If it does, terminate loop because this value will never escape. Values are recorded whenever the number of remaining iterations is a power of two. ­— Check whether z belongs inside the main cardioid or the largest circle attached to it. If it does, set remaining iteration count to zero straight away. — Write the iteration loop in such manner that minimizes the number of branches. — Automatically enable/disable periodicity checking for the next frame depending on whether at least 0.1 % of the pixels got the maximum iteration count. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ What every programmer must know about memory: https://lwn.net/Articles/250967/ Bisqwit’s guide to OpenMP: http://bisqwit.iki.fi/story/howto/openmp/ You can contribute subtitles: http://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: 17430 Bisqwit
Anatomy of the standard VGA 256-color palette
 
02:50
This video explains how the standard 256-color VGA palette works. (Also, the 16-color EGA palette by extension.) This video contains audio: Speech in English, and speech in Finnish. The speech was generated with the Festival Speech Synthesis System version 1.96, using the us3-mbrola voice for English and suopuhe_fi_lj_diphone voice for Finnish. This video is PART 2. In PART 1, you can see how this video was made. Link: http://www.youtube.com/watch?v=8x9Ya4izFaE Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/
Views: 14182 Bisqwit
Mega Man 4 ※ Cracking Videogame Passwords S01E05
 
03:52
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 http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=PFcxmdH_4ac Downloads: http://bisqwit.iki.fi/jkp2/mm4minimal1.py http://bisqwit.iki.fi/jkp2/mm4minimal1.php #Bisqwit #Programming #ReverseEngineering #Password #NES
Views: 11174 Bisqwit
Playing Portal... Blind. REALLY Blind.
 
11:36
I was curious to see, how I would do in the first test chamber of Portal with my eyes closed, relying only on the stereo sound from headphones. WARNING: Boring video. ENABLE ANNOTATIONS TO MAKE IT BETTER. Turns out, not so well. How did you do? Did you finish it quicker than I did? Post your results, make me feel like a loser!
Views: 985 Bisqwit
Installing Debian Buster (Modern Linux distribution)
 
14:01
Debian Testing is the Linux distribution that I use daily, with Cinnamon desktop environment. In this video I show how to install its most recent snapshot in a QEmu virtual machine and how to configure it (mostly) to my liking. Buster is the name of the next release of Debian (version 10), that is currently in the development and will be released probably somewhere in 2019. The Testing branch is always set to track whichever will become the next release of Debian. The purpose of this video is 1) to provide a logical counterbalance to the video in which I installed an old and obsolete distribution and 2) to answer some frequently asked questions, so that the next time when the question is asked I can just refer to (sections of) this video as an answer. Music: Energy Breaker “Wind that Whips the Wilderness”, and Tales of Phantasia “Ridge Racer”, and Addam’s Family 2 Pugsley's Scavenger Hunt “Boss Battle” — Converted into MIDI, played using OPL3 emulator. Also quotes Mega Man 2 and Half-Life. Twitter: https://twitter.com/RealBisqwit Liberapay: https://liberapay.com/Bisqwit (alternatives at http://iki.fi/bisqwit/donate.html) Twitch: http://twitch.tv/RealBisqwit Homepage: http://iki.fi/bisqwit/ You can contribute subtitles: http://www.youtube.com/timedtext_video?ref=share&v=lc2WvhCfyr4 #Bisqwit #Linux #Debian #Distribution #Virtualization
Views: 28423 Bisqwit
Rubik's Cube solves (and a few other cubes)
 
05:05
I finally learned to solve a 3x3x3 Rubik's Cube. Had to make a video of it, too. This is not a tutorial (although all the information can be found in the video description); I just wanted to record the fact. What does all that "R U-prime" stuff mean? Learn it for example here: http://shellie.nfshost.com/cube/ Check out Crazybadcuber's YouTube channel: http://youtube.com/user/crazybadcuber And also RedKB's channel, very similar: http://youtube.com/user/redkb For all of your oddly shaped twisty puzzle videos needs :-) You can buy all the cubes seen in this video from these pages: ShengShou 2x2 cube: http://bisqwit.iki.fi/dx/p/18286 ZHICHEN stickerless 3x3 cube: http://bisqwit.iki.fi/dx/p/157923 MoYu WeiSu 4x4 cube: http://bit.ly/10iwPL2 ShengShou 5x5 cube: http://bisqwit.iki.fi/dx/p/68235 TomZ 4x4x6 cuboid: http://bit.ly/10iwPL2 I also have a Pyraminx and a few Rubik's Magics I got a long time ago. I forgot to place them on the table. The algorithms listed: Solving the middle layer: (U R U' R') (U' F' U F) or (U' F' U F) (U R U' R') depending whether the missing piece lines up with front center or with the right center. Acquiring the top-surface cross: F (R U R' U') F' or F (U R U' R') F'; this algorithm permutes between six different combinations for the top layer. Doesn't matter which one you choose, but one goes the sequence forwards and the other goes it backwards; you can use this to your advantage to reduce the number of times you need to do it. Completing the top-surface: (R U) (R' U) (R U2) R' may need to do this many times in different orientations. Shuffling the top-layer corners: (R B' R) F2 (R' B R) F2 R2 (with headlights on front) or (R' F R') B2 (R F' R') B2 R2 (with headlights on back); doesn't matter which one you choose, just do whatever is comfortable. Shuffling the top-layer edges: (R U') (R U) (R U) (R U') (R' U') R2 (with completed surface on back) or L2 (U' B F') L2 (B' F U') L2 (with completed surface on right side); again doesn't matter which one you choose; just do whatever is comfortable. The ocarinas are from a few different stores. At least one is from http://stlocarina.com/ and one is from http://songbirdocarina.com/ . The Aramaic-English New Testament is from the GLC bookstore (http://glc.us.com/) and the C++ Primer book was ordered through Amazon (http://bisqwit.iki.fi/am/dp/0321714113). The lamb? I got it as a gift from someone. Hmm. The downsides of putting so many details in the picture frame...
Views: 4635 Bisqwit
Portal 2: Edge Glitch demonstration
 
02:32
In Portal 1, the Edge Glitch was a great game breaking bug which allowed the player to go out of boundaries of the game maps. In Portal 2, it seems the edge glitch is still there; just a bit more difficult to find. This custom map, which you can find at http://steamcommunity.com/sharedfiles/filedetails/?id=152498455, requires the use of the Edge Glitch to complete it. This video demonstrates how. Demonstrated offscreen (not seen in this video): -- Using the Edge Glitch push a cube outside the game map boundaries (where it can never be retrieved). -- Using the Edge Glitch to appear standing in a wall atop a portal (but not actually being there in gameplay sense).
Views: 2155 Bisqwit