3DO Doom succesfully compiled (but no way to run it)

Tools and projects
User avatar
Kyosho
3DO ZERO USER
Posts: 86
Joined: Fri Jul 05, 2013 1:49 am
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Kyosho » Fri Nov 20, 2015 3:40 am

Versus wrote:
blabla wrote: PS : I suggest you poking it around a little bit with it and try to downgrade some things if possible.
Sorry, can't understand this. :cry:
He's talking about lowering graphical detail and other things to get more frames per second. For instance, perhaps re-compressing textures to half their original size, etc. If that's even how the Doom engine works. I have no idea.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Fri Jan 15, 2016 7:29 pm

Started to make own font for ingame messages. All works now, but now I need to redraw all letters. Current are terrible :oops:
http://www.youtube.com/watch?v=-JIs6_-VeK4

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Tue Jan 26, 2016 8:19 am

First experience. Successfuly started new inserted map. :D
http://www.youtube.com/watch?v=V6u_iRKFcKA

User avatar
Austin
Master Poster & Pricing Expert
Posts: 1839
Joined: Sun Dec 20, 2009 11:30 am
Location: Fairfax, VA
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Austin » Thu Feb 11, 2016 6:11 am

Interesting! It would be great to see if better performance can be had out of this version of DOOM. A playable 3DO DOOM would be awesome!

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Thu Feb 11, 2016 8:22 pm

Here it's some new videos showing progress.
Extramap 3DO:
http://www.youtube.com/watch?v=zc5zXPtrJvI
100 Barons of Hell (3DO Doom)
http://www.youtube.com/watch?v=NlXqot5GaCk
Burning barrel
http://www.youtube.com/watch?v=z0GZvIxl7YE
Doom 2 map 1 test
http://www.youtube.com/watch?v=E9Smizzobqc

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Wed Mar 30, 2016 12:55 am

Any progress Versus ? Still figured out the resources format ?
You did a great job on 3DO Doom !

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Fri Apr 01, 2016 10:41 pm

Hi, blabla!
My recent work:
1) I can add a flats now:
https://www.youtube.com/watch?v=-KmL5MTraUQ
https://www.youtube.com/watch?v=jf794Q8Gqos
Video below shows all flats from Ultimate Doom, which I inserted in REZFILE.
https://www.youtube.com/watch?v=Ig9fkgDDPtg
Later I'll redraw small font. Now it's only for test.
2) I made IR goggles workable:
https://www.youtube.com/watch?v=7z61eoWryUU
They are working with strange bug (sometimes they doesn't turned off).
3) I made a monster teleport feature:
https://www.youtube.com/watch?v=xxvtmOomGSc
4) I wrote a cel cutter app for flats and fonts.
5) PC WAD file -> 3DO WAD file app is ready. Thanks to aliast!
Here it's a pack for generating REZFILE. You can add flats, maps or some other resources.
https://cloud.mail.ru/public/He5P/AKKJSJPVR
Archive contains new Launchme (without monster teleport and IR goggles yet, this is old version), doom.wad for level designing, all flats, scripts, apps for converting and others. You can run _Convert.bat, then go to Converted folder and run Makerez. You'll get a REZFILE!
You can look into the _Convert.bat file to find out what's going on.

Bad news:
1) I can not make a sprites for REZFILE. Rebecca gave me a slicer app source, but I can't compile it... Maybe you can try?
2) I can't make a wall textures or Sky textures without a Rebecca's slicer app.

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Sat Apr 02, 2016 11:03 am

Downloaded the pack for generating the REZFILE :
It seems indeed you have made some great progress , this is great !
Versus wrote: 1) I can not make a sprites for REZFILE. Rebecca gave me a slicer app source, but I can't compile it... Maybe you can try?
Could you give me the "slicer app" source code for me, please ?

Also, it would be nice if you could give me the source code for TexCutter.exe, WAD_converter.exe and MakeREZ.exe as well.
I would like to run it on Linux.
Thanks

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sat Apr 02, 2016 1:18 pm

Thank you!
You can download all sources below.

1) Contains source for FirstFileInRez, TexCutter, WADConverter (BlockMapWAD folder), Makerez (Makerez_2008 folder)
https://cloud.mail.ru/public/JQuF/pBooyZHuD
2) Contains my cel2shp util. Doesn't work! Maybe you'll find something useful there. I think that some functions are missing in lib, but it's only my suggestion.
https://cloud.mail.ru/public/HXWW/JcLRTcA6x
3) Contains Rebecca's files. Slicer app, cel2shp (standalone app) app, New BurgerLib (lib files for VisualStudio 2008 and *.h files). EXE files are from github repository and are new. Our old functions doesn't work in there. I putted them only for working examlpe.
https://cloud.mail.ru/public/8voU/F9T4EdkiC

I't would be great, if you'll try to help! :D

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Sat Apr 02, 2016 10:45 pm

Versus wrote: 3) Contains Rebecca's files. Slicer app, cel2shp (standalone app) app, New BurgerLib (lib files for VisualStudio 2008 and *.h files). EXE files are from github repository and are new. Our old functions doesn't work in there. I putted them only for working examlpe.
https://cloud.mail.ru/public/8voU/F9T4EdkiC
I't would be great, if you'll try to help! :D
Well, burgerlib is a mess.
Your slicer app requires it but when i try to compile it on my ubuntu computer, it fails to detect it.
"Unknown compiler / environment"
When i tried to open "burger.h" to see if i could fix it, i was surprised to see that the compiler detection is
a bunch of defines that is 300 lines long...

Maybe you forgot to put the "burger.h" file in the same directory as the slicer source code.
Try to do that and tell me if this works on your side.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sat Apr 02, 2016 11:36 pm

I can't understand what you trying to say me. :(
I'm working on Windows XP, VisualStudio2008. Try to open my cel2shp project. The correct burger.h is there (and in BurgerLib folder, of course).
Burger.h is reading from my project correctly, .lib file too. But I'm getting this, while trying to compile:

Code: Select all

1>------ Построение начато: проект: Cel2shp, Конфигурация: Release Win32 ------
1>Компоновка...
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""void __fastcall Burger::Free(void const *)" (?Free@Burger@@YIXPBX@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""int __fastcall Burger::MemoryCompare(void const *,void const *,unsigned long)" (?MemoryCompare@Burger@@YIHPBX0K@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Burger::ConsoleApp::ConsoleApp(int,char const * *)" (??0ConsoleApp@Burger@@QAE@HPAPBD@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Burger::ConsoleApp::~ConsoleApp(void)" (??1ConsoleApp@Burger@@UAE@XZ)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Burger::Filename::~Filename(void)" (??1Filename@Burger@@QAE@XZ)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: void __fastcall Burger::Filename::SetFromNative(char const *)" (?SetFromNative@Filename@Burger@@QAIXPBD@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: static void * __fastcall Burger::FileManager::LoadFile(class Burger::Filename *,unsigned long *)" (?LoadFile@FileManager@Burger@@SIPAXPAVFilename@2@PAK@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Burger::File::File(void)" (??0File@Burger@@QAE@XZ)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Burger::File::~File(void)" (??1File@Burger@@QAE@XZ)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: unsigned int __fastcall Burger::File::Open(class Burger::Filename *,enum Burger::File::eFileAccess)" (?Open@File@Burger@@QAIIPAVFilename@2@W4eFileAccess@12@@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: unsigned long __fastcall Burger::File::Write(void const *,unsigned long)" (?Write@File@Burger@@QAIKPBXK@Z)"
1>Cel2shp.obj : error LNK2001: неразрешенный внешний символ ""public: unsigned int __fastcall Burger::File::Close(void)" (?Close@File@Burger@@QAIIXZ)"
1>I:\..............................\REZFILE\Cel2shp\Release\Cel2shp.exe : fatal error LNK1120: 12 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://i:\.......................................\REZFILE\Cel2shp\Release\BuildLog.htm"
1>Cel2shp - ошибок 13, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Sun Apr 03, 2016 10:53 am

Looks like we are wasting our time using the pre-compiled libraries of burgerlib...
Try to compile burgerlib again using the latest version on github : https://github.com/Olde-Skuul/burgerlib

I see no other solutions, sorry.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sun Apr 03, 2016 11:38 am

The library I'm using is the newest lib from Rebecca. When I'm trying to compile libs from github, I'm getting an errors... :(

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sat Dec 24, 2016 9:51 am

I can make my own sprites now!
https://www.youtube.com/watch?v=oOHaLYuQtfA
Now I can see the way to make new enemies, powerups and weapons! First of all I' add a Megasphere there!
And my old intro with PSX music:
https://www.youtube.com/watch?v=u9Ae2h9r_dU&

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Sun Dec 25, 2016 2:36 pm

Very cool, that's what we needed !
I wonder how you managed to do it tho... you were able to compile it ?

Thanks for the christmas gift Versus !

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sun Dec 25, 2016 5:47 pm

My pleasure 8)
1) Finding the correct cel format. I saved many cel files using old Photoshop (and CelWriter plugin). Then I compared saved cels with exsisted sprites using Hex editor.
2) Using a new cel2shp app from Rebecca Heineman.
3) Manually added offsets and X,Y coordinates to all shapes in sprite file.
I'll write new app to make this more quickly.

What do you mean? I was able to compile launchme file about 2 years ago... Or are you speaking about sprite files?

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sun Jan 22, 2017 7:45 pm

New types of objects and sprtites! I wrote an app for making a Sprite files from cel frames. Now I must prepare sprites for... Hell Knight I think. :wink:
https://www.youtube.com/watch?v=6WBKbUrCP-0

https://www.youtube.com/watch?v=zFqHrpLg9Q0

User avatar
blabla
3DO ZERO USER
Posts: 142
Joined: Wed Feb 13, 2013 3:23 am
Location: France
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by blabla » Fri Jan 27, 2017 5:40 pm

Nice !

Also, i'm noticing how it runs a little faster compared to, you know, the original game.
Maybe it's just due to the simple map or maybe you sped up your code a bit ?
It would be interesting to try to port a 32X map over the 3DO port just to see how well it would run.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Tue Jan 31, 2017 9:10 pm

All new objects and their frame delays are corresponding with the PC source and converted to 3DO values. It's strange that speed is different...
I didn't edit any of the "speed" functions in the code yet.
And, some news:

https://www.youtube.com/watch?v=_kfalvvLLtc

https://www.youtube.com/watch?v=MAYmz_AYPK4

I think that 32x map will work correctly.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Mon Feb 27, 2017 9:02 pm

Distant monsters. Who can recognize them?
Image

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Wed Mar 01, 2017 10:25 pm

I think we should move to this thread.
Thank you, Optimus, your bar is working! But I think its scale was set incorrectly or sprites are using another memory space (?).
Here it's the demonstration:
https://www.youtube.com/watch?v=aRt0aA80QWk
As you can see, level is overloaded with many different sprites. For example: Spider Mastermind sprite filesize is about 491kb... After I killed all enemies the game runs faster. But memory bar displays strange results. What do you think about that?

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Optimus » Thu Mar 02, 2017 8:11 pm

I have seen the video, I am not sure why the monsters are so slow, don't know if it's the ram or some other bottleneck. If it was the memory, it would have possibly crashed? Although there is a place in code where it's rendering all the stuff in batches, and when it reaches a certain amount of cels, it flushes them and starts again. If this number is extremely small, too many flushes, it's very slow. Also, there is memory detection and if it's very low it emergency flushes the cels. But if it's really a problem, the bar doesn't make sense. In my tries, I try to fill up more, and I make it very small till it resets. Also, from what I see, when a new level loads, the remaining memory is stable, I see this 816 all the time, it rarely only jumps. I guess when a level is loaded, all sprites are loaded, done. It's only the creation, rendering and destruction of cels with this flushing that in my guess could make the memory go a bit up and down a bit. It's only at this part there is this emergency memory safety, if some more cels are added maybe, it flushes them before they fill memory. If you loaded before the spidermastermind and the monsters and memory was already full, it would crash I think. I was on the main screen with less memory, then loading the level wouldn't fit so it reseted. But if you are already inside, in my guess only if the bar was very close to zero, and changes in cel rendering numbers occure, it would flush and reflush regularly. The sprites and all graphics are already loaded once. Unless I am missing something, but I don't know.

Also, you can take the value from GetTotalFreeMem() and print it somewhere. Now, I do it with my own font, I won't post the code yet because it's more complex and maybe there is easier way in the API (with 3DO text output or Doom fonts?) unless you want it, I could open repository. But if you can print the value on screen, you can see directly.

Oh and here I print in several screens, divided by 1024, so I get the kbytes. If it's correct, it seems there is enough memory left, but maybe in later levels I have not tried, things are getting too tight, I don't know. I will have to be sure, because if I make changes or optimizations that need some precalced data, it might run well on first levels but I have to test all levels to be sure.

Image

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Fri Mar 03, 2017 9:11 am

I have frequent access to CD drive during this freezes. And yes, sometimes during this game crashed. Perhaps you are right, we have frequent flush of cels. All new cels reaches the sprite limit and flushes starts again.
I'm not preloading SpiderM like other enemy sprites. All SpiderM sprites are loading during the game by engine demands when enemy is in FOV or behind the corner. When I'm trying to preload ALL enemy sprites (old and new) the game crashes during loading screen. But that is predictable.
I'm using the PrintNumber function to display values on screen. I saw that remaining memory GetTotalFreeMem() on my simple level never goes below 800 000 bytes. But I have crazy freezes at the same time. So maybe I should find a some value that starts flushing cels and try to encrease it?

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Optimus » Fri Mar 03, 2017 11:33 pm

If you want to change the flushing value, at threedo.c there is #define CCBTotal 0x200. I have managed to set it to something like 0x1000 and still fits in memory. I also managed to count the CCBs per frame by increasing a counter in every function that adds ccbs, and it can go from 240 to 1500 in worse cases. When it's over 700-800 things get choppy. Usually the wall columns contribute the most.

Also, I found out that sprites usually are drawn as a single quad, unless they are partially occluded by walls. Then they are drawn by individual column CCBs. Most of the time in your video they are in open, not occluded by walls, so I would guess at most times, very few CCBs are thrown for the sprites in your video. I noticed in your video, when the monsters have not woken up, it is smooth. It's only as they wake up and before they die that it's very slow. I am wondering if there is something in the scripting of the monsters. Btw, how did you work to pass these new monsters? Besides transferring the resources, did you copy the gameplay code for these monsters from PC Doom to the 3DO code? I hope there is no bug there that creates this problem. I am wondering about the hitscanning frequent shooting of the spider. Have you tried to remove a single monster each time and retest, to detect which one is creating the problem?

Also, I am interested in how you create these maps for 3DO. If I had the original WADs or could make this REZ file out of them, I could maybe edit the WADs with Doom Builder or something. I would be curious to make some maps that really push the 3DO in terms of many many sectors, visplanes, lines or sprites and test the performance.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sat Mar 04, 2017 7:08 pm

Here it's the link to all utilities I'm using and my current progress.
https://cloud.mail.ru/public/J8dK/k4nrqT2oh

Source folder contains all edited source files (not original ones). This is my current progress.

CompileFS - makes an ISO file.

PACK folder contains all the resources for REZFILE and all utils. Check _Convert.bat file for details.
Start _Convert.bat to convert resources for REZFILE. Then go to "Converted" folder and start MakeREZ.exe to make a REZFILE.
If you need the sources for utilities I’ll upload them. FirstFileInREZ.exe makes a first file (r_TexData) that contains width and height of all textures in the game. TexCutter.exe converts cel files to cel shapes for directly using in REZFILE. WAD_converter.exe converts pc wad files to 10 lumps in 3DO format. Converter has some limitations, so if you are getting errors, it may be fixed in source. It may occurs when level WAD is too big. You need press F6 in GZDoom Builder and set NodeBuilder to BSP-W32 in all active configurations. You’ll need to attach 3DO doom.wad file (in zip file) in resources tab. This WAD file contains all the resources you may use in your levels. When I made a new object, I add corresponding resource in this WAD file. Now you can create any level in GZDoom Builder and test it in 3DO Doom.

_Convert.bat file and MakeRez.exe app in Converted folder do all the job for making the REZFILE. Please note that all txt files are necessary.

Ph-win32 – Phoenix 3DO emulator for testing the ISO.

To_ISO_Doom3DO – folder with all files. Use CompileFS app to create ISO file from these.

3DO doom.wad – attach this file in GZ Doom Builder.

As for the new objects and sprites… For SpiderM for example, I divided sprite for 6 files for walking, 1 for attacking, 1 for pain, 1 for dying, 1 for dead body. That’s because the enemy is huge! In most cases I’m making 1-3 files for the enemy. See my current progress in link. Why I’m using many files for SpiderM? Because pointers for sprite shapes inside each sprite file are bigger than 0xFFFF and I couldn’t use any of 0x8000 prefix, that saves size of the sprite and perhaps their location in memory. I assume that sprite with and without prefix is loaded only once in memory.
So, when enemy is simply standing, only 1 sprite file is loaded. When it starts to move, next sprite file is loaded by demand. If we have many different types of enemies and they are started attacking at once, we have this freezes. If there are less monsters, the game runs faster. No matter which type of monster is on level.
I’m converting all pc code very carefully. It can’t be the reason I think.

PS. My oneclick compile project is working with some strange bug. That is because the compiler(?). When level 20 is finished loading a fantom torch appears on the moment and then dissapears. May be there are some others bugs, I don't know...

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Optimus » Sun Mar 05, 2017 6:27 pm

Thanks for the files and all the information. I would love to try get used with the whole process and make some tests soon.

Btw,. this is my first video of investigating the performance, and little experiments with lowres floor/wall quality settings I am testing, to see if they improve (they only do a little, much more work and research will be needed to run this smoothly).

https://www.youtube.com/watch?v=NHIGxEwZSnA

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Sun Mar 05, 2017 10:36 pm

Very interesting! May I see your source? I want to play with your bar and hacks on my test level. :oops:

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Optimus » Mon Mar 06, 2017 12:34 am

Yes, here it is, I just opened a public bitbucket repository with the code so far.

https://bitbucket.org/Optimus6128/3donewprojdoomsource

I have a separate bench.c/h with the bar code, then it's used by calling startBenchPeriod and endBenchPeriod between the code part I want to test like in rmain.c or phase6.c atm, I see I have to clearBench every frame, so I do it on rmain.c (there are also some things I bench there, like BSP calculation and others. SegCommands() is called there which runs in phase6.c where most of the wall/floor preparation and adding of CCBs happen (even though everything will be rendered/flushed only on threedo.c at the end, something I don't benchmark yet). Anyway, it's a bit convoluted, also don't forget to call initBench just once in the beginning, I do that on initTools on threedo.c.

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Mon Mar 06, 2017 6:50 pm

Thank you! I'll insert this in my project and try to explore. :)

Versus

Re: 3DO Doom succesfully compiled (but no way to run it)

Post by Versus » Mon Mar 06, 2017 8:36 pm

My enemies takes almost all time in BSP calculations (the left blue bar)... :cry:
https://www.youtube.com/watch?v=KUgs7qjAIL4

Post Reply