Can we just take a moment and appreciate the fact that this guy didn't put a single ad on an hour long video?
@javidx9
5 жыл бұрын
Thanks! Or any of my videos as it happens 😊
@cecilectomy
5 жыл бұрын
Never has, and doesn't intend to, iirc. Doesn't care about monetizing the channel, only cares about the community, code, and knowledge.
@CB3ROB-CyberBunker
5 жыл бұрын
don't even think you can monetize videos when the account is registered on most parts of the world other than the usa. can't find it anywhere in my account for one thing. lol. youtube never understood much of the 'open one office in pakistan and just send everyone bitcoin' thing and think they have to open 'local offices' with 'local payment bullshit' everywhere. lol. for all i care they just pop the cash in an envelope. works anywhere where there is a mailman ;)
@ObnovaDomu
5 жыл бұрын
can i be your patron? :>
@javidx9
5 жыл бұрын
@@ObnovaDomu you certainly can!
@PflanzenChirurg
5 жыл бұрын
You are the personification for actual, usefull qualitycontent about c++. Be proud!
@javidx9
5 жыл бұрын
Thanks Great Bullet! I just want to show that fun applications are possible and far better to learn from than text books XD
@josemaria2094
5 жыл бұрын
TheChernoProject, Universo Programado and Bisqwit are too, :)
@PflanzenChirurg
5 жыл бұрын
@@javidx9 thats my speech, books are outdated crap for the biggest part.
@PflanzenChirurg
5 жыл бұрын
@jj zun i have experience yes but understanding the whole background of a system is another level of expertise you have to gather, and im thankful for every useful plate someone is able to serve.
@Xd4LEM4ObX
3 жыл бұрын
@@josemaria2094 All the channels that i like... You're brazilian right?
@VirtuelleWeltenMitKhan
5 жыл бұрын
The test ROMs are a super nice thing to have. A wife which is willing to check your code is even better.
@Simple_Simon_UK
5 жыл бұрын
I can't stop giggling. You have taken me right back in time. I wrote a 6800 Emulator (Dissassembler) in Pascal, during my second year at University in 1984! The Ureka moment for this most daunting of tasks was when I devised the table of Instructions and Addressing Modes. Once I'd created the table, the implementation of the CPU was a doddle. I love the elegance of your C++. You are a very clever cookie.
@kkeanie
5 жыл бұрын
jesus! Do you still have the code!
@Simple_Simon_UK
5 жыл бұрын
@@kkeanie Sadly no. My wife's de-cluttering got rid of my history many years ago.
@skilz8098
5 жыл бұрын
@@Simple_Simon_UK Bad wife; bad wife!
@Simple_Simon_UK
5 жыл бұрын
@@skilz8098 Nah. She's a fantastic Wife. She has put up with my s#it for over 37 years. She just likes to de-clutter once in a while.
@vtomasr5
5 жыл бұрын
I think I'm more exited about the well organized and educational content rather than the NES emulator itself ;)
@saraweber312
5 жыл бұрын
This is honestly amazing! This is basically a college course that's free. Keep up the good work man!
@WagnerSchmitt
5 жыл бұрын
Since your first video I already started building my own Emulator. You were right, it is such a wonderful project to work on. It was something I also wanted to do a long time ago, and your videos gave me the motivation to start. Thank you for that, and for making the videos so didactic.
@amisner2k
5 жыл бұрын
You did your whole presentation, outside, in the heat and didn't take one sip of your soda. You absolute legend. XD
@manuellehmann267
5 жыл бұрын
Uhhhh... I was so looking forward for this! I just wanted to say: Thx for your awesome work here! I'm learning so much from every single video you are posting. So much detail, so much passion. Again: Thx for sharing this stuff with us.
@javidx9
5 жыл бұрын
Hey my pleasure donnerbrenn!
@Heisenberg2097
5 жыл бұрын
Fills so many gaps I never cared about to fill back in the days though it was all in front of me... had to care about so many other things. Great video.
@hellbenthorse
4 жыл бұрын
I could listen to this top bloke talk about CPU architecture all day..
@theronster345
5 жыл бұрын
System Designers back in the day were geniuses. I had to design a Single Cycle CPU that performed all the bit wise operations and arithmetic operations for my computer organization class. It fried my brain by the end of the semester. Thanks for the vid it improved my knowledge of system design but also C++.
@code-dredd
5 жыл бұрын
@53:43: This is an attempt to clarify a potential point of confusion for others who may not be too familiar with the stack. Normally, the stack pointer (i.e. `stkp`) should be pointing to the element at the top of the stack. However, in the code as shown, the `stkp` isn't really pointing directly to the top element. Rather, it's pointing to the (logically) "empty" location where the next element should go when pushed, which is why the `write(0x0100 + stkp, a)` call is made first in `PHA` before decrementing the pointer with `stkp--`. Consistent with this, in `PLA`, you can see that the `stkp` is first incremented before reading, so that it moves from the (logically) "empty" stack position down to the actual top element in the stack. I mention this because "normally", you'd expect the `stkp` to be pointing to the top element directly at all times, which would mean that on push, you'd be `stkp--` and then `write(...)`, and on pop you'd be doing `read(...)` and then `stkp++`, in that order. BTW, if you're wondering why `stkp` is decremented in value when the stack itself is supposed to be growing in size (and vice-versa), the reason is that stacks grow from high memory addresses down to lower memory addresses. GG
@marklandgraf7667
4 жыл бұрын
Thank you. I was confused.
@senatorpoopypants7182
3 жыл бұрын
you misspelled stkp as stpk in some instances
@code-dredd
3 жыл бұрын
@@senatorpoopypants7182 Fixed. Thanks.
@funposting8912
5 жыл бұрын
It’s beautiful seeing a deep-dive into the 6502 like this in video form. Even the simplest of microprocessor trainers don’t get this absolutely simple, I love it! Can’t wait to see you go through the rest of the NES’s hardware like this, this series is taking my knowledge from a rough, “good enough but never great” understanding to something much more refined and even simplified. Thank you very much for everything you’ve done so far, and I can’t wait for the rest of this series!
@ContractCAD
5 жыл бұрын
I taught myself 6502 30-odd years ago as a 15 yr old and guessed at what your emu code would look like (which in fact was my assumption as to how I’d write one). This tho has been a masterclass. I can’t wait for the rest. Thank you sir!
@javidx9
5 жыл бұрын
Thanks Matt, I'm approaching the series with broad strokes, and the devices get more complicated as we progress so it will need a bit of "filling in the gaps" later.
@skilz8098
5 жыл бұрын
I've tried to do something similar on my own before from reading the documentation from nesdev, and from listening to others but the one thing I kept struggling with was the different addressing modes. After following your source and typing it by hand in my own IDE, as I was reading through the mnemonics or functions and seeing how you implemented them in C++ then I started to understand the actual internal hardware of the CPU. I've worked in Logisim to create simple 4 bit single phase single address CPUs which are quite easy to build from basic gates, but now I think I finally got the full grasp of the different addressing modes of the 6502. I really appreciate videos like this; they help to fill in the gaps! After you complete this series I think building the 6502 - NES in Logisim as a step by step set of tutorial videos would be another exemplary set of worthwhile videos! I was hoping that Ben Eater would take his 8-bit Bread Board CPU and do the same in Logisim! Who know's maybe one day!
@kb3khs
4 жыл бұрын
Got a Sir David Frederick Attenborough vibe at 1:05:35 Your inflection was good. And the resolution inflection made me feel like I was watching David on the BBC nature channel. LOL. I admire your work, and your choice to not put ads in your videos.
@jdragyn
5 жыл бұрын
Hobbyist programmer here, but I haven't had the opportunity to write any software in years. Watching you write this NES Emulator is both so incredibly satisfying (your presentation, voice, style and knowledge is amazing) and inspiring (I wanna write something like this now - you make this large project seem do-able!). Thank you for sharing your obvious passion!
@rfdave3980
3 жыл бұрын
I spit my coffee out when you said your wife checked the lookup table. Wow you are a lucky guy. I have so much information to watch with your channel. Thanks Dr. David.
@jszoja
3 жыл бұрын
Usually I'm watching videos like this with x1.75 speed to get quickly what I need to know, but there is no need to do that with your videos. Very good work. Much appreciated. God bless.
@lozD83
4 жыл бұрын
Only 5 minutes in and I can already tell this video is a great resource for anyone interested in 6502 and probably any processor/microcomputer understanding. Thanks for taking the time to explain things so well 😁
@mannhansen9337
4 жыл бұрын
Excellent video. You are a great teacher with very good presentation skills. I'm a self-taught 6502 programmer on a KIM-1 back in 1980-81.Some years later when I got an IBM PC and developed a 6502 table driven assembler in Quick Basic,later Turbo Pascal.
@OptimusNiaa
Ай бұрын
That was excellent and easy to follow. I hobby code a little in C Sharp (Unity) and LUA (Pico-8 and Pictotron), and as it relates to the 6502 I watch channels like Displaced Gamers. But the assembly-language world has always felt inscrutable black box-y. And yet now, after watching this, I feel like a have a much more clear understanding of the 6502. Thanks!
@johnhammer8668
4 жыл бұрын
Wow. This channel has very unique and rare content. I did not knew i lacked so much basic knowledge until i watched David's videos.
@TheBeanhacker
5 жыл бұрын
Incredible! Been eagerly awaiting this video all week. There's a crater in my office floor where I've been nervously tapping my foot! Awesome video, it paints processor emulation in a simple and elegant light, and makes it appear very achievable.
@JeremiahKellogg
5 жыл бұрын
This is amazing! I know it's a labor of love, but thanks so much for sharing. It really removes some of the more mysterious aspects behind how CPUs work. I'm really looking forward to the rest of the series.
@GeneralVanRyberg
4 жыл бұрын
This is a super-duper-awesome video. I can't imagine this video being much better... Thank you so much!
@javidx9
4 жыл бұрын
Cheers!
@Oingoboingo710
5 жыл бұрын
This is so nice, this series is going to be really awesome!
@javidx9
5 жыл бұрын
I hope so Mah Moud, thanks!
@chrismcovell
5 жыл бұрын
What a great instructional video! You tell potential emulator writers first to choose the level of detail at which the emulation will take place, then consistently explain coding choices for staying at that level. I wish I could explain things just as well.
@walterdiaz2003
Жыл бұрын
I really enjoy learning from this channel. Excellent and high quality content and free. Reminds me of the channel "Self Sufficient Me", similar accent :) Thanks for sharing.
@tomkirbygreen
5 жыл бұрын
Fab video David! :-) I learned lots and as ever the process was entirely enjoyable!
@frankkubrick865
3 жыл бұрын
You make complex programing so easy to understand, you sir are a legend!
@javidx9
3 жыл бұрын
Thanks Frank!
@bripbrap
3 жыл бұрын
I'd just like to take a moment to really appreciate your implementation of the LUT for the instructions. Using the OPCODE as an array index is just genius. My naive approach was just a huge switch statement.
@whukriede
Жыл бұрын
Well, anyone exposed to the bit fiddling in those days would do it even if half unconscious.
@Seftdelmer
5 жыл бұрын
Wow, these videos are excellent, with clear and concise explanations. You can tell a lot of time and effort went into making these videos by their quality. Thank you for making them and keep up the good work.
@speedyc88
5 жыл бұрын
Just watched Part 2 of your emulator video, Javidx9 nice job, more please
@bruno-zl9qn
2 жыл бұрын
Brilliant. I'm writing a Z80 emulator in Rust, and I am using your video for that purpose. Thanks a lot for the hard work put in those videos.
@zgolkar
5 жыл бұрын
Outstanding. Simply outstanding. 10/10. Great explanations, great approach of showing the code incrementally, engaging at all times. Thanks a lot, I will be looking forward to the rest of the series!
@spjewkes
5 жыл бұрын
Thank you for yet another interesting and informative video. Also, congratulations on your 100th one. It’s been a fantastic journey so far and I’m looking forward to many future videos :)
@cheaterman49
5 жыл бұрын
I honestly expected no less after seeing part #1, but this really shows how great of a complement it can be (for those interested) to Ben Eater's "8-bit computer on a breadboard" series! Love it! I honestly thought of implementing one in software after seeing his video, but didn't even think of pushing it to the extreme and emulate a console! Very inspirational! :-D
@jdunlap1974
5 жыл бұрын
FYI, LDA $41 is NOT an immediate load. It is a zero page load and loads the value stored in address $41 just like your second example loads from $0105. Zero page just takes fewer cycles. An immediate load would be LDA #$41.
@Meow_YT
5 жыл бұрын
So much this... came looking for this very quickly.
@jdunlap1974
5 жыл бұрын
@@Meow_YT I did notice, however, that later in the video when the disassembler is shown, that it is done correctly. Therefore, I think Javid just misspoke here.
@GustavoValdiviesso
5 жыл бұрын
This is great even if you are just interested in learning 6502 assembly.
@sjoervanderploeg4340
2 ай бұрын
I love multi-dimensional arrays filled with something you want to store :D
@d74g0n
5 жыл бұрын
I uploaded 400 vids before I realized I passed 100 lol. Congrats on your growth.
@sherifhussein9707
2 жыл бұрын
You should receive the equivalent of noble prize for content creation. Thank you for making this world a better place!
@frankk6416
5 жыл бұрын
Thanks for putting this together. Your presentation is spot on and easy to follow - a pleasure to watch.
@GettinSadda
3 жыл бұрын
A great video on 6502 emulation - much better than another one I saw recently that made 3 serious errors in the first few minutes... so lost me! It also makes my want to revisit the microcode-based one I did years back that uses an array containing steps like "load next byte to internal bus and increment PC" and "move from internal bus to register A"
@teslastellar
4 жыл бұрын
Thanks a lot David. Wonderful series. The time and effort you put into these videos is immensely appreciated.
@net2cn
4 жыл бұрын
I have only tried implementing a CHIP-8 emulator before in my life. But now, I guess I want to create something bigger after watching this video.
@mathman0569
Жыл бұрын
This is wonderful, so detaled, love the video, trying to make an NES emulator in JS bc I'm bored and JS is what I write most in
@jacksmith3183
5 жыл бұрын
Super impressed, just blown away with how awesome this video series is
@GornGre
2 жыл бұрын
That was so inspirational that I have implemented it in C# :)
@DIDIJEANPHI
3 жыл бұрын
Where was I when you released this series ???.. Awesome video & very instructive. Congratulations
@MK73DS
5 жыл бұрын
51:47 Shouldn't it be A = A - M - 1 + C ?
@javidx9
5 жыл бұрын
Yes, nice catch, so the +1 cancels out the -1
@icupiii
5 жыл бұрын
This is one of the best series on YT. Thanks!
@BackyardFilms2
5 жыл бұрын
Nothing is more beautiful then those huge lists of functions
@shriram5494
2 жыл бұрын
sheeeesh bisqwit caught me off guard. what a legend that man.
@AntonioKantek
2 жыл бұрын
This was the best 6502 video tutorial I ever watched! Congrats!
@javidx9
2 жыл бұрын
Lol cheers Antonio! 😊
@Eugensson
5 жыл бұрын
This is amazing! Thank you so much for this video! Very good presentation, kudos for this.
@javidx9
5 жыл бұрын
Cheers Dmitry!
@philipthatcher2068
5 жыл бұрын
An excellent and very well paced explanation. Great video.
@Inevitablerizzler
5 жыл бұрын
Again, nice to see useful information being spread to people about this sort of stuff, nice job!
@Chandrasekhar-fu2ws
4 жыл бұрын
I want to subscribe you 1000 times , you have an excellent mind in teaching complex things in very simple way. My thinking is improved. You are my guru thanks you somuch
@suvetar
2 жыл бұрын
This is great work and very motivating; I really will get off my behind and start doing my own dream project! Thank you so much!
@vegardt3433
3 жыл бұрын
This is so clearly communicated that I can still follow at 1.75 speed.
@xM0nsterFr3ak
5 жыл бұрын
man i am addicted to these videos. keep up the good work!
@JamesLewis2
3 жыл бұрын
A better example of signed byte overflow would be 127+5, because 127 is within the range of both signed and unsigned bytes, while 0b10000000 is -128 as a signed byte, and -128+4 does in fact equal -124.
@ArtumTsumia
3 жыл бұрын
Wow, probably shouldn't be impressed but function pointers are a nice thing to see in a video like this. I feel like too often they're looked at as some kind of bad practice, only to be replaced with some kind of Switch statement. In a more basic project, that might have still happened, but when you have to jump to this number of different points, it's by far one of the most practical solutions.
@Lucretia9000
5 жыл бұрын
Thanks for this, it'll come in handy when I do my Z80 emulator :)
@budabudimir1
5 жыл бұрын
Just to make things clear, putting a large member field inside of the class does not mean that memory is allocated on the stack ( the warning you were talking about at 18:00 ), as the entire class could be allocated on the heap. Only should you actually put that class on the stack, it could result in a warning if you are close to your stack size limit.
@marcinborkowicz2557
5 жыл бұрын
Great video, David! I love this retro stuff and the way you explaining the matter. Keep going! One little remark: 6502 chips utilize no microcode. You told in the video something like this: "there are microprograms executing particular opcodes...". I believe you've used it as a metaphore, haven't you?
@skilz8098
5 жыл бұрын
The 6502 Especially the NES has multiple clocks running at the same time. THE PPU, APU and CPU all run at different frequencies. So one may run 3 cycles while another runs only once. There is a main master clock in the system. There are other parts to the NES that weren't directly mentioned in these videos as of yet, but you also have the I/O system besides the RAM, ROM, APU & GPU. There is a logic controller that keeps all of the clocks in sync even though they run at different frequencies. So in a sense you could consider the ratio of operations of one device to another "microcode" as the APU or PPU may have to wait for the CPU because of the fact that it had and Interrupt Request from user input. So there is a logical controller behind the scenes that is managing the state of the system. The NES is in a way both a simple and a complex design. Compared to some of today's architectures it would appear rudimentary or elementary in nature, yet in its own time it was a complex beast!
@freeelectron8261
3 жыл бұрын
I am interested in a M6802 emulation - I guess that would be pretty similar to the 6502? Might look to see how similar the instruction set is. Really great video series - many thanks javidx9!
@WinLoveCry
2 жыл бұрын
Fantastic work and great implementation
@nikola8345
5 жыл бұрын
Love your videos!After finishing learning the core language ill start with libraries and your guides!
@dreamyrhodes
4 жыл бұрын
I wish such videos would exist in German and they would show them in schools to kids at high school age because it's very well explained basic explanation of how computers basically work.
@borgy33771
5 жыл бұрын
Man you are so good at explaining things! Good work!
@adamwulf
5 жыл бұрын
incredible! very excited for this project, keep up the great work :)
@StevenOBrien
4 жыл бұрын
The bits on the bus go round and round
@javidx9
4 жыл бұрын
Probably need a more suitable termination resistance...
@leathernluv
4 жыл бұрын
"I'm going to add code that will make you spit your coffee..." Already writing OO code, too late. For reference, my first programming was done in ASM. I don't think in objects, I think the way CPU's run and code that way.
@andreaprovasi9786
4 жыл бұрын
Ah man, SO true.
@TheMsbhvn1
5 жыл бұрын
A funny thing happened when I compiled the code with the VS2019 x86 Native command prompt. When I linked the program, Windows Defender immediately gave me a virus alert and deleted the executable. In case anyone wants to reproduce it, I ran cl /c /EHsc *.cpp and then link /OUT:olcNES.exe *.obj. Might have something to do with the machine code injection? Still, it's an amusing false positive.
@javidx9
5 жыл бұрын
That could be the GetAsyncKeystate used in pixel game engine. Some AV software can identify its use as being a key logger. Interesting find though, nice one.
@yairkatz6223
5 жыл бұрын
awesome, glad to watch another one of these
@tom_verlaine_again
Жыл бұрын
Thank you so much. This is absurdly good!
@BryanChance
3 жыл бұрын
Thank you so much. Your videos are priceless for learning.
@Ziplock9000
3 жыл бұрын
I love how in the first 10 seconds he says he wants to do this video in the sun, the proceeds to do the next hour of it indoors lol
@username17234
3 жыл бұрын
Terrific video!
@lonnybulldozer8426
2 жыл бұрын
I'm curious about the clock. Since you are not actually setting a time delay, only counting down the cycles, would this not cause it to run significantly faster than the original hardware? And if so, would that not affect the actually execution of games?
@mattyw87
5 жыл бұрын
This is just top quality content. So good. Thank you.
@allanr1771
5 жыл бұрын
You are easily the most talented programmer on KZitem.
@javidx9
5 жыл бұрын
Thanks Allan, but i highly doubt it. My projects are a hobby. I know some of the pros out there are programming machines, exceptional thinkers.
@allanr1771
5 жыл бұрын
@@javidx9 maybe but are they on youtube...ha!
@mortkebab2849
5 жыл бұрын
You said that you like to write for clarity. One of the serious problems I have with solving Project Euler problems is that it takes hours for me to resolve bugs introduced by complex expressions that are necessary for optimizing the program. I've got two versions: one simple that produces the correct result and the more complex one that produces an incorrect result and I can't easily see why just from looking at them.
@gower1973
5 жыл бұрын
All the naughty functions are in XXX haha see what you did there, a lot of this went over my head, tried a few times to learn c++ but just can’t get my head around the syntax, Just started learning the Unity engine and c# and that’s a bit easier.
@senatorpoopypants7182
3 жыл бұрын
This should help get you up to speed on cpp, if you're still interested. kzitem.info/door/PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb
@lis6502
2 жыл бұрын
34:46 i can't remember now (i don't have 6502 powered machine at the moment to ensure :p) but indirect addressing on page boundary for JMP at least was buggy. JMP $(BAFF) constructed pointer's location out of BAFF and BA00 (not as expected BB00). Funny enough, this was explicity used in some copy protection mechanisms. This _might_ have also affected other indirectly addressed instructions like LDA$(9AFF). edit: okay, you have addressed this topic few seconds later ;p
@tcpbox
2 жыл бұрын
The best emulator video ever.
@tinker7722
3 жыл бұрын
Thanks for all that details. It's inspiring! 🎩
@gabrielferrer8061
5 жыл бұрын
Hi David. As usual amazing stuff. Regards.
@JoannaHammond
Жыл бұрын
This illeagal opcodes where sometimes a godsend.
@cxzuk
5 жыл бұрын
Subscripted for the NES tutorials - Loved the videos. One Question, Early in the video you mention that the current instruction will complete when an interrupt occurs. Does that include the cycle count? Currently any outstanding cycles are trashed when an IRQ fires. should perhaps be cycles += 7?
@javidx9
5 жыл бұрын
This is a great observation, and I'll admit something I hadn't considered - I'll experiment, it may add some stability.
@kallewirsch2263
5 жыл бұрын
@@javidx9 I would do it this way, that nmi and irq just set a flag in the cpu, that an interrupt was requested. In clock(), when the cycle count reaches 0 and you are about to start a new Van Neuman cycle, check the flags and process the interrupts if any are pending. I don't know about the 6502 in particular, but in most CPUs you need to do that anyway for irq, since the irq may be disabled, in which case the execution of the irq routine is delayed until the interrupts are enabled again. (But as said, this is a generalization derived from most CPUs I had to work with in the past. I have not checked how this works on the 6502, but I would expect it to be the same) Just by using "pending flags" you get this behaviour (and more or less this is exactly what most cpu usually do, by using a flip flop to store "interrupt pending") Edit: YOu may also want to check the data sheet, if there may be a delay after enabling the interrupts. Eg. on an AVR processor it is guaranteed that after enableing interrupts at least 1 instruction is executed before the interrupt is serviced if one is pending. Again: Don't know about the 6502.
@cxzuk
5 жыл бұрын
@@javidx9 after some more thought. I have some more questions on the interrupts. Are all instructions truly atomic on the 6502 - does the CPU "freeze" during the required clock cycles? If they are not atomic, then what should happen if an interrupt fires while another is already in its cycle? My guess is that interrupts are actually disabled during those 7 or 8 cycles? And those second interrupts should be dropped? Currently this handles those extra interrupts. If that's true. We're going to need a second counter to handle interrupt cycles. Add a guard clause to the interrupt functions (if (icycle > 0) return). And decrement this second counter in the main loop (if (icycle > 0) icycle--;)
@travistrue2008
3 жыл бұрын
I've been looking forward to an in-depth video series like this for years! I'm going through your implementation @32:00, and I noticed that the implementation for ZP0() masks `addr_abs` by `0x00FF`. I can see how that's necessary for ZPX() and ZPY(), but do we need that for ZP0 since we only read a single byte for that case? Is that merely for consistency between zero-page implementations, or am I missing an important detail there? Can `addr_abs` have a value beyond 255 after line 100 has been executed? It sounds like we're only reading the low byte as an optimization, so does that mean that there's actually 2 bytes there?
@christiansommerfeld2369
4 жыл бұрын
Cool, smart and enviable intelligent. Wow! Greetings from Germany! Christian
@javidx9
4 жыл бұрын
Thank you Christian!
@Blonder_Studio
2 жыл бұрын
Nintendo: sees this video also Nintendo: im about to end this man's whole career (literally)
@jhoughjr1
2 жыл бұрын
Instead of spitting out coffee I cursed thats fucking brilliant. very elegant imo. certainly should e easy to use and consistent.
@slicendicesoftware6473
5 жыл бұрын
Amazing video! Thanks!
@DigitalViscosity
5 жыл бұрын
About halfway done with my Java version of the 6502 2A03
Пікірлер: 753