DOOM on an ESP32 via SDCard with sound

แชร์
ฝัง

ความคิดเห็น • 112

  • @acatisfinetoo3018
    @acatisfinetoo3018 4 ปีที่แล้ว +27

    Wow it runs so buttery smooth...it's even better than my old 386 PC from back in the day.

    • @kingcrimson234
      @kingcrimson234 3 ปีที่แล้ว +3

      It would be a lot smoother, the micro is pretty powerful, but the SPI LCD can only be refreshed so quickly.

    • @minisynthmaniac
      @minisynthmaniac 8 หลายเดือนก่อน

      My 33 MHz 386 could run Doom smoothly only when the screen size was set to minimum... Full screen was like slideshow.

    • @batStelko
      @batStelko 4 หลายเดือนก่อน

      I still remember how was waiting over 10 min to load and start on my old 386 SX PC :)

  • @hawaiianryan1890
    @hawaiianryan1890 3 ปีที่แล้ว +12

    This is an awesome way to learn how to connect various peripherals to an ESP32! As a bonus, you can play DooM if you do it correctly!

  • @epineh
    @epineh 5 ปีที่แล้ว +7

    Awesome, runs better than my 386 did back in the day!

    • @pweddy1
      @pweddy1 5 ปีที่แล้ว +1

      epineh
      It should! This thing clocks way higher than any 386 ever did!

    • @kingcrimson234
      @kingcrimson234 3 ปีที่แล้ว +1

      @@pweddy1 Not only that, it's more efficient per clock. This thing should easily be a good 20 to 40 times faster than the typical old 386. And it costs less than $10.

  • @louiswilson5873
    @louiswilson5873 4 ปีที่แล้ว +9

    Damn it lol, I’ve been doing research into esp32 with sd cards and this pops up. Not surprised just forget that doom is put on everything😂

  • @vulcan4d
    @vulcan4d 5 ปีที่แล้ว +7

    You make my 486 seem old!

  • @redchurchweld5528
    @redchurchweld5528 ปีที่แล้ว +1

    Wow, you are absolutely amazing, i remember doom as I'm really old lol.
    I wonder if anyone will develop for the esp32 one day, like hire a studio to max the esp32 out

    • @dawsonpate7385
      @dawsonpate7385 ปีที่แล้ว +1

      The esp32 is used in many iot electronics . . . But if u mean for gaming . . . Then probably will stay within tinkerer circles.

  • @ToasterWithFur
    @ToasterWithFur 6 ปีที่แล้ว +64

    this is smal enough to fit in a potato, so you could play doom on a real potato pc

    • @peterweber79
      @peterweber79 4 ปีที่แล้ว +11

      ~6 potatos in series and the PC is self-sufficient ^^

    • @epxzzy
      @epxzzy 2 หลายเดือนก่อน

      personal microcontroller

  • @SleepyAdam
    @SleepyAdam 5 ปีที่แล้ว +5

    This makes me want a mini handheld made specifically for Doom. Kinda like one of those those nostalgia pandering fun sized "retro" game handhelds you see at Target but better.
    It could come pre-installed with Doom and Doom 2 but if we wanna go crazy maybe it could load your own levels from a microSD.

  • @toxic._.skullzanimations2232
    @toxic._.skullzanimations2232 4 ปีที่แล้ว +2

    i appreciate the lego lightsaber

  • @jim-xi1ml
    @jim-xi1ml หลายเดือนก่อน +1

    i cant seem to find the code in the file can you make a totoril on how to do it

  • @rasiyanin
    @rasiyanin 5 ปีที่แล้ว +25

    Multiplayer via wifi?

    • @reold
      @reold 3 ปีที่แล้ว +1

      Possible using sockets

  • @MaxSMoke777
    @MaxSMoke777 2 ปีที่แล้ว +2

    I could really use a tutorial on how to get this onto an ESP32, as it's not Arduino based.

    • @Goosboi
      @Goosboi 2 ปีที่แล้ว

      same.

  • @matiasvaldothebird4043
    @matiasvaldothebird4043 ปีที่แล้ว +1

    works on an ESP32-S3 WROOM N8R8 has 8 MB of flash memory and 8 MB of RAM.?

  • @Lolatronn
    @Lolatronn 4 ปีที่แล้ว

    I have a sign that runs a esp33 . Gonna put this on my to do list for it.

  • @acatisfinetoo3018
    @acatisfinetoo3018 3 ปีที่แล้ว +2

    How do i go about compiling this on the esp32. I don't have much experience in this area so could someone elaborate?

  • @commentingsaguaro
    @commentingsaguaro 3 ปีที่แล้ว +2

    Can you please create a tutorial on how to create this, cuz my esp32 just came from aliexpress.

  • @thebaconbreadful
    @thebaconbreadful 3 ปีที่แล้ว

    I came for DOOM on ESP32 and stayed for a let's play

  • @RobbertDIYprojects
    @RobbertDIYprojects ปีที่แล้ว

    cant get it to work for days. any option to share the compiled iso?

  • @Ritbulau
    @Ritbulau 2 ปีที่แล้ว

    Btw, I am going to make this cool thing, and I have a question. Can you switch guns? I can see only 6 buttons: look left, look right, walk backwards, walk forwards, shoot and use. Mabe dooble click on eof the buttons do it, but can you give me an answer please.

  • @alexeylagutenkov2300
    @alexeylagutenkov2300 5 ปีที่แล้ว +4

    Could I ask you to share bin code for this project please? Sometime it is quite hard to get correct compilation of the project from source codes but it is very interesting to see my favorite game on ESP32. When I was yong it was the best game on IBM Pc 386DX computer :)

  • @PhilR0gers
    @PhilR0gers 29 วันที่ผ่านมา

    My home made solar water heater controller runs on an ESP32. I think I need to upgrade its capabilities. I'll have to get some proper arcade buttons though. Those clicky buttons are really irritating, and the click mechanism slows down their action.

  • @Zocht-Kocht
    @Zocht-Kocht ปีที่แล้ว

    could you have used the SDcard slot on the screen too?

  • @warlockd
    @warlockd 6 ปีที่แล้ว +3

    I was thinking of doing this project too haha. I got Quake to work on my STM32479 Discovery and was thinking of going lower end. Did you have any problems with the spi? That is, are you using the same SPI bus on both the RAM/FLASH and the LCD?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +2

      ESP32 has 3 SPI buses. RAM/onboard flash always share one. For this project LCD and SD are on the other 2 buses. I've started using LCD and SD on the same bus, and mutexes (see Odroid-Go videos) , It's not really a problem for games like Doom, Duke3D. They load as much from disk to RAM as possible at the start of the level, then page in if it didn't all fit.

    • @warlockd
      @warlockd ปีที่แล้ว

      @@GadgetWorkbench Hi, thought I should update. I did get quake running but it was choppy. I busted my kit and moved on sadly so don't have much in the way of video. I did however, get Doom running on the discovery before it died and got even music to work. Only reason music worked though were the dsp instructions on the arm. Being able to merge 16 channels (8 per ear) using only 7 thumb instructions per sample helped ALOT. I learned why DSP instructions are so important that day. Still had to run the sound at 11khz. Even though the midi samples I had were at 24khz, started to studder a bit. I also discovered why the music library that was with doom at the time was 3rd party instead of inhouse.

  • @maracastells5926
    @maracastells5926 ปีที่แล้ว

    Hello, I'm interested in doing it, but I have doubts about how to use the SD card and how the programming would be, I don't know if the SD card has something to do with the operation....

  • @pickoftheglitter
    @pickoftheglitter ปีที่แล้ว

    Great project! I've ordered the needed parts, I need to build one too!
    Is it possible to run DOOM 2 instead of DOOM?
    One technical question: those TFT displays often come with an embedded SD card reader; is it possible to use it, instead of an external one?

  • @postiemania
    @postiemania 3 ปีที่แล้ว

    Now I must build this.

  • @zetaconvex1987
    @zetaconvex1987 5 ปีที่แล้ว

    Impressive to say the least.

  • @jacek-jan
    @jacek-jan 7 หลายเดือนก่อน

    Holly... Performs at least as good as my 486 PC for over 1000$ back then... At the costs of power cable. I knew It has decent performance but it is quite impressive.
    The only issue is no proper keyboard to strafe, run, change weapons and so on...

  • @OlegAnashkin
    @OlegAnashkin 6 ปีที่แล้ว +3

    Looks awesome! Can you please publish schematics for this project or a fritzing diagram of how everything connects together?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +4

      Thanks, I've updated the links with a schematic. Although I don't have GPIO12 and GPIO4 from the SDCard to the ESP32 (these are required for 4-wire SDMMC, but not exposed by my SD card breakout.

  • @alexnvm3341
    @alexnvm3341 8 หลายเดือนก่อน

    what do you put in platformIO?

  • @thomassawer6175
    @thomassawer6175 9 หลายเดือนก่อน

    pulling my hair out trying to get this working

  • @ButilkaRomm
    @ButilkaRomm 2 ปีที่แล้ว

    This is DOOM running on bare metal or there is some minimalistic Linux kernel loaded? There should be some graphics library.

  • @zsombor_99
    @zsombor_99 2 ปีที่แล้ว

    Can you somehow connect a USB controller to this and map the controls onto it? 🤔

  • @부계정-h4b4f
    @부계정-h4b4f 4 ปีที่แล้ว +1

    Can we have RCA or VGA output instead of lcd?

    • @steviestl2269
      @steviestl2269 4 ปีที่แล้ว

      th-cam.com/video/adYwnctiKsg/w-d-xo.html
      maybe like that

  • @brenoalencararaujo3672
    @brenoalencararaujo3672 2 ปีที่แล้ว

    Could you run in a Stm32f103 microcontroller?

  • @walterhynson2898
    @walterhynson2898 3 ปีที่แล้ว

    I have tried 2 times ti install the esp idf and nothing but trouble so now I try again.

  • @4ndrej
    @4ndrej 6 ปีที่แล้ว +3

    oh, memories.....
    this is great.
    it seems you need better input device

    • @e8root
      @e8root 3 ปีที่แล้ว

      buttons on breadboard are already the best input device possible. I just do not see how this could be improved...

    • @kingcrimson234
      @kingcrimson234 3 ปีที่แล้ว

      PS2 keyboard would be extremely simple to interface and be the perfect way to play.

  • @TheNamelessOne12357
    @TheNamelessOne12357 6 ปีที่แล้ว +4

    What is the speed of LCD SPI Bus?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +2

      This is at 40Mhz - 80 wasn't stable.

    • @TheNamelessOne12357
      @TheNamelessOne12357 6 ปีที่แล้ว

      @@GadgetWorkbench So there should be around 32 FPS at 40 MHz 320x240 with RGB565, but it seems to be around 7-10 FPS. Why is it so slow? Is MCU unable to handle the game.

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว

      Yes, this was running on 40Mhz PSRAM too. Increasing to 80Mhz would help a lot - but would mean moving the LCD and SD card to the same SPI.

    • @TheNamelessOne12357
      @TheNamelessOne12357 6 ปีที่แล้ว

      @@GadgetWorkbench But why did you put PSRAM on VSPI? The internal WROVER PSRAM was not enought? And, AFAIK, SPI driver can set different speeds for different devices on the same SPI bus.

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว

      Sorry - I did not put any additional PSRAM on it. To run the internal PSRAM at 80Mhz, you need to use one of the SPI bus' as a clock for it. I assumed this means you would not be using anything else on that bus.

  • @danhans42
    @danhans42 6 ปีที่แล้ว +2

    Great work,
    Just one question. I have built my own mini handheld (I use a PSP thumbstick rather than buttons) and my LCD is connected to some different pinouts (it follows the pinout of the ESP Wrover Kit V3) with sound on GPIO27 and my SDcard is connected through
    Think it would be much work to use a different set of Pins other than changing the pin assignments and the code/DAC pins used for input?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +3

      Thanks. The LCD and SD Card should be OK with any SPI pins, although if they're sharing the same SPI it might slow down - as files load during gameplay. For sound I use I2S connected to the DAC to handle DMA buffers for me - the documentation only states that this works on pins 25 or 26. If pin 27 doesn't work for this, you might have to re-write the sound output...

    • @danhans42
      @danhans42 6 ปีที่แล้ว +1

      I should be okay as my LCD and SDcard dont share any pins (my board is a TTGO T8 v1.3 with SDcard on IO2/4/12/13/14/15) so should be okay. I'll have a play and see if I can get up and running without sound and take it from there. Thanks for getting back to me :)

  • @leobiranykun7808
    @leobiranykun7808 3 หลายเดือนก่อน

    Can u make tutorial how to make it

  • @ivanz9324
    @ivanz9324 3 ปีที่แล้ว

    Nice. Is there anywhere full-size DOS emulator with SD card support? Just to launch any old game or dos program from SD-card... (with an ability to download anything there)?

  • @Evilslayer73
    @Evilslayer73 3 ปีที่แล้ว

    can you show us how to upload

  • @uplink44
    @uplink44 ปีที่แล้ว

    I'm an arduino beginner (with couple of own completed projects) and I would really love to replicate what You did there. I have some hard time understanding schematics (some parts). Question (if you would be so kind to answer, or point me to a web article explaining): Why did You put resistors on SD card lanes and one one the LCD connection? (I can understand the logic behind keys+resistors). So far I was succesfull getting LCD, amp and SD card working on their own (no resistors). Just would like to know what's the benefit/reasoning?

    • @JabroniAUS
      @JabroniAUS ปีที่แล้ว

      Some of the GPIOs have a mix of weak pull-up and weak pull-down on reset. I was having issues with the SD card working correctly without these hardware pull-ups. If you don't have issues, then they are not needed.

  • @andresaguilerah.959
    @andresaguilerah.959 4 ปีที่แล้ว

    Hi, thanks a lot for the information. Do you know how to detect when the SD was removed o extracted and when it was put on again? for example, it is working normally and it is on, but someone wants to extract SD and does not turn off the device and then put again, so dont work well, but if i detect that was extracted i can do somethink. do you know somethink like that?

  • @armandoangulo1337
    @armandoangulo1337 3 ปีที่แล้ว

    Sound is fully working?

  • @JaapioNL
    @JaapioNL 4 ปีที่แล้ว

    Madness!

  • @toolzshed
    @toolzshed 5 ปีที่แล้ว

    whoaaa awesome!

  • @Kingpin3k
    @Kingpin3k 6 ปีที่แล้ว +6

    Your projects are amazing! Are you planning to release this for the odroid?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +5

      Thanks! It already has been ported by others, check out these pages:
      forum.odroid.com/viewtopic.php?f=159&t=31716
      github.com/chrisdiana/awesome-odroid-go

  • @autodidact7127
    @autodidact7127 2 ปีที่แล้ว

    I am still trying to get this man. Someday I'll succeed. :D

    • @autodidact7127
      @autodidact7127 2 ปีที่แล้ว

      I'm gonna document my current issues/questions here.
      I am now some sort of DEV in my day job. However I still cant get this badboy project to work.
      I have several questions about the presentation to the WROVER
      1. On the SD card, is the formatting Fat32, or other, also the files on the SD card, does the machine look for DOOM1.WAD DOOM.WAD or any *.WAD files.
      2. For the SD card reader. I notice that your interface in the schematic is DAT2,DAT3,CMD,VDD,CLK,VSS,DAT0,DAT1,SH1,SH2,SH3,SH4,SH5, However in your actual physical model you are utilizing a standard SD card reader. They have appropriate mappings on the WROVER module but do not map to the model of SD card reader or any others I can find.
      3. There are quite a few resistors in play on your physical model however the Card reader you've chosen and many others come pre protected and packed with resistors. Are these redundant?
      4. Finally, what is the expected behavior onscreen if the machine boot successfully however there are no Wad Files or are unrecognized. "Grey screen"?
      This concludes my questions. I've successfully flashed binaries to a WROVER module however I think Im missing a few details. I've checked all through the source code for a DOOMWADDIR, however I can't find any declarations involving file name expectation.

  • @AlexAlex-qp1oi
    @AlexAlex-qp1oi 5 ปีที่แล้ว +1

    I need guide how to upload source code to ESP32,can You help me? :)

    • @GadgetWorkbench
      @GadgetWorkbench  5 ปีที่แล้ว

      docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html
      The ESP IDF is the most powerful and flexible way to compile and flash the ESP32. If you're after a simpler method, you could try arduino....

    • @yeogav
      @yeogav 4 ปีที่แล้ว +1

      yes, would be nice for a clear guide on the flashing process for getting Doom onto the esp32.

  • @StoneColdFin
    @StoneColdFin 6 ปีที่แล้ว +1

    What display you have on this project?

    • @GadgetWorkbench
      @GadgetWorkbench  6 ปีที่แล้ว +1

      If you search on aliexpress for "ili9341 spi" you can find it easily.

  • @donvukovic
    @donvukovic 5 ปีที่แล้ว

    What is the part number of that tiny speaker ?

  • @autodidact7127
    @autodidact7127 3 ปีที่แล้ว

    Dude, I've been at this for hours. (Edit: Days) I cannot for the life of me figure out how to make the file from your source code. Esp32 IDF just says no Cmakelists.txt. Should I be using VScode for this? I've got the chip all booted up and communicating over serial but I am unable despite hours of trying able to figure out how to use your code. I cannot run make in the ESPIDF. I am tracking everywhere you've spoken about this online but I am not having any luck. I don't want you to do it for me but could you point me in the right direction to make the file?

    • @GadgetWorkbench
      @GadgetWorkbench  3 ปีที่แล้ว +1

      This project was made with an older version of esp-idf - before they started using cmake. docs.espressif.com/projects/esp-idf/en/v3.3.4/get-started/index.html I think you'll have to download an older esp-idf, or use a new idf and create the cmakelists file yourself.

    • @autodidact7127
      @autodidact7127 3 ปีที่แล้ว

      @@GadgetWorkbench Thank you. I managed to get an older version that uses GNUmake. My complete lack of experience super highlighted here. I even purchased all of your parts, including the wrover. Do you have an email where I could just send you like 100 bucks and buy the prebuilt files off of you?>

    • @GadgetWorkbench
      @GadgetWorkbench  3 ปีที่แล้ว +1

      I've uploaded the pre-built binaries to the Git repo.
      To Flash:
      python2 /home/user/esp/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 /home/user/Git/doom-espidf/build/bootloader/bootloader.bin 0x10000 /home/user/Git/doom-espidf/build/esp32-doom.bin 0x8000 /home/user/Git/doom-espidf/build/partitions.bin
      But this means you can't change any of the pins used, or use menuconfig to customise settings.
      Maybe you could start by building simple projects.

    • @autodidact7127
      @autodidact7127 3 ปีที่แล้ว

      @@GadgetWorkbench I literally love you. I was in a bit of a rush with the last comment. I was successful in getting the older espidf, however there were many dependencies that from my limited experience would require an older version of many of the prerequisites. I made many attempts to compile with the older flashmake but what I'd configured kept failing to compile with certain files gpdstub.h and others. I am extremely thankful that you did that! THANK YOU! THANK YOU! I've done many a project with the esp but they all used arduino IDE. Thank you again!

  • @JaapioNL
    @JaapioNL 4 ปีที่แล้ว

    How much ram does that board have? 512kb + 8mb psram?

    • @GadgetWorkbench
      @GadgetWorkbench  4 ปีที่แล้ว +2

      It's 520kb SRAM + 8mb PSRAM - but I'm only using 4mb PSRAM here. To use 8mb you need to use a different "himem" api.

    • @JaapioNL
      @JaapioNL 4 ปีที่แล้ว

      @@GadgetWorkbench I see. I just got my teensy 4.1 I wonder how hard it would be to adapt the code to run on a teensy.

    • @JaapioNL
      @JaapioNL 4 ปีที่แล้ว

      Looks like someone beat me porting it to the teensy th-cam.com/video/adYwnctiKsg/w-d-xo.html

  • @yeogav
    @yeogav 5 ปีที่แล้ว

    What program did you use to flash the esp32? Thank you

    • @GadgetWorkbench
      @GadgetWorkbench  5 ปีที่แล้ว +3

      esp-idf: docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html#installation-step-by-step

    • @yeogav
      @yeogav 5 ปีที่แล้ว

      @@GadgetWorkbench thank you for your quick reply. Nice project by the way

  • @rayanahmad6901
    @rayanahmad6901 9 หลายเดือนก่อน

    Is this wrover?

    • @rayanahmad6901
      @rayanahmad6901 9 หลายเดือนก่อน

      Sorry, I found out already

  • @DenisZamazkin
    @DenisZamazkin 5 ปีที่แล้ว

    Can I run this on WROOM32?

    • @GadgetWorkbench
      @GadgetWorkbench  5 ปีที่แล้ว

      Not unless you add some more ram. Like the wrover has.

  • @FloGroX
    @FloGroX 5 ปีที่แล้ว +1

    Very nice but.... Does it run Crysis??

  • @bender_bay
    @bender_bay 5 ปีที่แล้ว

    What kind of OS is installed ???

  • @rayanahmad6901
    @rayanahmad6901 9 หลายเดือนก่อน

    Showing my non tech friends what this small chip can do😮

  • @danilo_bright
    @danilo_bright 4 ปีที่แล้ว

    Show

  • @pweddy1
    @pweddy1 5 ปีที่แล้ว

    Suggestion, an old school NES or Genesis gamepad would be trivial to connect to GPIO and way easier to play.
    Very cool port though.