Bad Apple on the Homebrew CPU!

Ғылым және технология

Viewers have been asking for this. Bad apple is a tune and video with a rich history that has been “ported” to many low powered systems as a technical challenge.
This is one of the most complex demos I’ve implemented on the system with synchronized Audio, Video, SD card and the UART.
You’ll want to watch the follow up video “Porting Bad Apple to the Homebrew CPU!” where I discuss many of the technical challenges and my solutions. • Porting Bad Apple to t...

Пікірлер: 93

  • @weirdboyjim
    @weirdboyjimАй бұрын

    Join us on Discord: discord.gg/jmf6M3z7XS (Over 1024 members!) Follow me on Twitter: twitter.com/WeirdBoyJim Support the channel on Patreon: www.patreon.com/JamesSharman

  • @czemacleod
    @czemacleodАй бұрын

    I've seen bad apple ported in some weird and whacky ways - but I love this. It is amazing what can be done on 'limited' hardware, and the JAM-1 is an amazing piece of kit.

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thanks! I had to use a lot of tricks to make this work as well as it does. Push hardware's limits has always been a fun challenge!

  • @HeadCodeMonkey82
    @HeadCodeMonkey8216 күн бұрын

    An amazing port, your CPU ran it so well, it looked and sounded great. All that and capacity to stream the lyrics out with the music, you have every reason to be proud of what you have built

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Glad you like it! I've been looking forwards to sharing this demo with everyone!

  • @nezu_cc
    @nezu_cc14 күн бұрын

    Rule 86 - If it exists, you can play Bad Apple on it Great work

  • @weirdboyjim

    @weirdboyjim

    14 күн бұрын

    Glad to be of service!

  • @joonglegamer9898
    @joonglegamer989816 күн бұрын

    Your CPU is so beautifully modular, love it. I commend you for having the stamina to go through constructing and building and even making it to "PCB" to make it, even if just for the "I knew I could do it" satisfaction of doing so.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    That was always my vision, to be able to show all the parts clearly bad still have it running.

  • @mekafinchi
    @mekafinchi16 күн бұрын

    beautiful. A true culmination of your work.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thank you! It's nice to do something that uses so many of the separate features!

  • @TheGunnarRoxen
    @TheGunnarRoxenАй бұрын

    I have no idea what Bad Apple is, but this is great! JAM-1 has come a looooooooong way!

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    I will probably link this video in the public release: kzread.info/dash/bejne/aIWNlsekkcaXj7Q.html

  • @janschrder
    @janschrderАй бұрын

    James, You're squeezing some impressive gxf performance out of JAM-1 Well done :-)

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thanks! This one has a far few ticks at play.

  • @m1geo
    @m1geoАй бұрын

    This is fantastic, James! An awesome demo! 😍😍

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thanks George!

  • @damouze
    @damouzeАй бұрын

    Wow! That is truly impressive. I knew about the song and the video, but not much else, so the video explaining Bad Apple was very educational as well!

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Glad you liked it! I was in a similar position, I knew about bad apple as a "thing" in the demo community but I didn't really know anything about it's history until I started digging into it for this demo.

  • @damouze

    @damouze

    Ай бұрын

    @@weirdboyjim Who knows, if I finally get my Stackable Z80 Computer build completed with a VGA circuit, maybe the next port will be to that platform ;-).

  • @danny_racho
    @danny_racho15 күн бұрын

    I'm very glad, I was part of the big journey :)

  • @weirdboyjim

    @weirdboyjim

    15 күн бұрын

    Good to have you along!

  • @bradywb98
    @bradywb98Ай бұрын

    Wow this was amazing! I love how it exercised seemingly all components so well. I’m excited to see how you pulled off the graphics since they look very bitmapped, as well as how the timing was done (RTC?) the sound, lyrics, visuals all seem very well coordinated.

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thanks Brady! I'll explain more in the programming video but the main loop is les than 1/60th of a second so it syncs itself with vertical blanking on the vga.

  • @andrewfraser2760
    @andrewfraser276016 күн бұрын

    Seriously impressive just how far JAM-1 has come - awesome work James 👍

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks Andrew!

  • @younessamr6802
    @younessamr680215 күн бұрын

    the animation is so smooth

  • @weirdboyjim

    @weirdboyjim

    15 күн бұрын

    Glad you approve!

  • @iamdarkyoshi
    @iamdarkyoshi16 күн бұрын

    Excellent work!!

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks!

  • @cj09beira
    @cj09beiraАй бұрын

    Looking awesome great job james.

  • @cj09beira

    @cj09beira

    Ай бұрын

    so many questions

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Hopefully my follow up video will have many of the answers!

  • @MaxintRD
    @MaxintRD16 күн бұрын

    Wow. Simply amazing!

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks Marcel!

  • @FrankGevaerts
    @FrankGevaertsАй бұрын

    Looks and sounds awesome!

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thank you Frank, Glad you like it!

  • @enderjed2523
    @enderjed252316 күн бұрын

    Didn't expect this to happen, thanks chap!

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    You are welcome!

  • @ecosta
    @ecosta16 күн бұрын

    In a decent and fair world, this video would have hundreds of thousands of views. Considering you created this CPU from scratch, "incredible" don't start to describe what you did there! Also massive kudos to whoever created that demo in first place.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Very kind words! And yes, the original video is impressive itself. I provide some more details in the Porting video.

  • @twobob
    @twobob16 күн бұрын

    just SO good

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks twobob!

  • @AiOinc1
    @AiOinc116 күн бұрын

    The skeletons Halloween demo is still my favorite audio recording you've ever done

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Lol! Glad you liked it!

  • @WolFik789
    @WolFik78916 күн бұрын

    God damn it, that's epic.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks! Glad people are enjoying it!

  • @LazieKat
    @LazieKat13 күн бұрын

    It sounds like a washing machine I love it.

  • @weirdboyjim

    @weirdboyjim

    12 күн бұрын

    For some reason my washing machine plays tunes as well.

  • @Fox-Tech
    @Fox-TechАй бұрын

    Woo hoo! That's fantastic.

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thank you!

  • @tinygriffy
    @tinygriffy16 күн бұрын

    Awesome.. 👍

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks!

  • @jerril42
    @jerril42Ай бұрын

    Just WOW!

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Thanks Jerril!

  • @tomasparrado873
    @tomasparrado87316 күн бұрын

    Very impressive. I don't understand where you're storing the video frames. RLE on B/W probably gets you quite far, but to also store 4 channel audio and the lyrics. Looking forward to the follow-up explanation

  • @weirdboyjim

    @weirdboyjim

    15 күн бұрын

    Data is streamed from the SD card, there is a production video linked in the description that explains more.

  • @tomasparrado873

    @tomasparrado873

    15 күн бұрын

    Yes, I forgot you added the SD card and I did watch the explanation video. It's still remarkable how you managed to compress the data down to stream it in real time. Only storing the tiles that change was a lovely trick. If you're ever low on ideas for videos I'd be interested in learning more about how you pre-processed the frames assuming this was custom code and not a feature of video editing software. I'm assuming it wasn't written in assembly. Great video as usual

  • @TheDefpom
    @TheDefpom16 күн бұрын

    Wow… just wow.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks Scott!

  • @andymouse

    @andymouse

    16 күн бұрын

    And another Wow for good measure !

  • @vendorfrostblood5481
    @vendorfrostblood548116 күн бұрын

    Very well done! And I guess I'm one the side of people who lacks words for expression here, it is "*wow*" indeed :D (By the way, the video link in the description is broken/leads to a deleted video)

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks for the kind words! Not sure what happened with the link, I fixed it a while back when someone else pointed it out.

  • @miege90
    @miege9011 күн бұрын

    really impressive demo! The sound frequencies are not quite in tune with each other. I know that the sound module is quite limited, but I was wondering: Is this due to the rounding in the divided frequencies? Do you think that this could be improved, by building a better clock divider? Have you experimented with capacitors to make the square waves look more like sine waves for a less distorted sound? Also I would be interested in the quality of a direct recording of the audio line, without converting it to airwaves and back again :D

  • @miege90

    @miege90

    11 күн бұрын

    it was really enjoyable to see the SD expansion being put to good use :)

  • @miege90

    @miege90

    11 күн бұрын

    one particular thing I was thinking about: especially for midi music tracks, you basically have just 11 different frequencies in an octave and for each octave their respective frequency is doubled/halfed. So matching the frequency very precisely relative to each other is probably very important for playing music in tune, and the different octaves could be implemented quite trivial with counter chips.

  • @weirdboyjim

    @weirdboyjim

    9 күн бұрын

    Thanks. I have a hypothesis that some of the tuning issues that people (With a better ear than me) are reporting is a software issue in my midi convertor. I need to investigate it when I get some time.

  • @djc1402
    @djc1402Ай бұрын

    Awesome. I take it you are streaming off the SD card. Do you use any video compression, like run length encoding?

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Lots. There is both run length encoding within frames and delta encoding between frames.

  • @edgeeffect

    @edgeeffect

    Ай бұрын

    @@weirdboyjim Woah! Reminds me of my days messing around with a DIY Autodesk Animator player.... But that was in C, not assembly... looking forward to the "making of... DVD extra" ;)

  • @RomixalView
    @RomixalView16 күн бұрын

    Cool 😎👍

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks!

  • @matteopascoli
    @matteopascoli16 күн бұрын

    what next? A mod tracker implemented in hardware? 😆

  • @weirdboyjim

    @weirdboyjim

    15 күн бұрын

    To be honest, the trend would be to do more in software.

  • @ninjalemon_Squash
    @ninjalemon_SquashКүн бұрын

    Wow

  • @preetamdas4048
    @preetamdas404816 күн бұрын

    Rad 😎

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Thanks! 👍

  • @crbielert
    @crbielert16 күн бұрын

    👍

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    😎

  • @AJMansfield1
    @AJMansfield116 күн бұрын

    The tuning on that bass line tho...

  • @drivers99

    @drivers99

    16 күн бұрын

    Something’s off

  • @AJMansfield1

    @AJMansfield1

    16 күн бұрын

    @@drivers99 ye, like I'd understand if it was a high arp that was out of tune (the audio circuit has only limited tuning resolution at the high end), but for a bass line that's almost certainly a software issue.

  • @drivers99

    @drivers99

    16 күн бұрын

    @@AJMansfield1 I wonder if the midi file has things transposed based on the instruments, and so the notes are wrong in the conversion. “Audio from scratch part 10” sounds good enough. This is more like bass being in entire the wrong key

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    I feel bad that the sound lagged behind the visuals.

  • @peter.stimpel
    @peter.stimpelАй бұрын

    Good call with linkin kzread.info/dash/bejne/aIWNlsekkcaXj7Q.html for more explanation. And maybe you link the video itself as well, has only 88m clicks by now. And of course someone needs to mention the efford spent by OSU to "render" the full video in last years r/place. Good job, James, I love it!

  • @weirdboyjim

    @weirdboyjim

    Ай бұрын

    Glad you liked it Peter!

  • @fnot804
    @fnot80416 күн бұрын

    Bad link to explanation video.

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Oops. Try this one: kzread.info/dash/bejne/ZJtlypecn82cmaQ.html

  • @hermannpaschulke1583
    @hermannpaschulke158316 күн бұрын

    inb4 millions of views

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Bold! a few thousand if I'm lucky ;-)

  • @frank7911
    @frank791116 күн бұрын

    weird flex, but ok. epic display of some serious dedication

  • @weirdboyjim

    @weirdboyjim

    16 күн бұрын

    Lol Thanks. Was the demo the weird flex or the entire build?

  • @stefankrause5138
    @stefankrause51386 күн бұрын

    Not bad at all, and also not an apple, this is kinda clickbaity =)

Келесі