Този порт се оказа доста сложен, особено в съжителство с Wolfenstein 3D. И двете игри са написани на стар стил C и масово използват глобални статични променливи. Те хем заемат памет даже и когато не се използват, хем са с едни и същи имена и си пречат, тъй като кода е писан от едни и същи хора.
Наложи се също да добавя и динамични палитри към композитното видео. Wolfenstein 3D използва само една 8-битова палитра (256 цвята), която съдържа всички цветове които се появяват на екрана. Doom обаче има 14 различни палитри и постоянно ги сменя. Например когато стреляш в тъмна стая, за момента стаята светва заради огъня който излиза от дулото. Този ефект синковците го постигат чрез смяна на цялата палитра в която всички цветове са по-светли. Или пък когато стрелят по теб всичко става по-червено – пак смяна на палитрата в която всички цветове са тонирани в червено.
Другия проблем е че все още не мога да подкарам музиката, а без нея Doom просто не е Doom. Музиката е складирана в самите файлове на играта в MIDI формат. Това е много прост формат и само определя кой инструмент коя нота за изсвири и кога. (Bсе едно че само натиска клавишите на йоника.) Как точно звучи определен инструмент вече е работа на MIDI синтезатора, какъвто ESP32 няма. Това означава че трябва да се емулира софтуерно посредством библиотека като Timidity, която изисква звуците на около 200 различни инструмента да са складирани в директория на SD картата. За сега все още не съм сигурен дали ще успея да подкарам MIDI синтезатора и ако тръгне дали няма да натоварва процесора прекалено много и да забави играта значително. Другата възможност е някак си да го направя да работи през Ad Lib, както е при музиката на Wolfenstein 3D, която вече съдържа софтуерен емулатор на YM3812 FM синтезатора на Yamaha. Качеството е ужасно, но изобщо не натоварва процесора, а и звучи някак си по-автентично през говорителя на Правеца.
Едно от нещата което ме изненада е скоростта с която тази игра върви. На пълен екран работи поне толкова бързо колкото Wolfenstein 3D, ако не и по-бързо! Аз на времето се бях сдобил с използван 386 DX/33 MHz и много добре си спомням че беше достатъчно бърз за Wolfenstein 3D, но не и за Doom. Можеше да върти Doom, но екрана трябваше да се свие значително за да работи добре. На пълен екран правеше само 2-3 кадъра в секунда. Един приятел с по-големи финансови възможности по това време имашe 486 DX/66 MHz и при него вече беше идеално. Това беше между 1993 и 1996 г. Разрових се из Нета и се оказа че сорса на този порт е в оптимизиран доста години след като излиза и тази оптимизация го прави около 3 пъти по-бърз от оригиналния Doom. Като се сетя какви пари се хвърляха през 1993 г. са само да имаш 486 и то главно заради Doom, a то можело просто да бъде по-добре оптимизиран и да си работи идеално на 386 DX/33!
Много се задълбочих, така че спирам. Ето клипче на прогреса да тук. Има звуковите ефекти, но без музика. Все още има и редица други проблеми, повечето от които са свързани с недостиг на памет заради глобалните статични променливи, което не е проблем, но изисква време да се направят динамични.