
It all looks stunning!

Moderators: ICS, Moderator Team
GokMasE wrote:Considering the recent progress I can't wait until the next demo binary
It all looks stunning!
Looking at the binary Douglas sent, that's indeed the case.GokMasE wrote:It all looks stunning!
I spent some time today comparing output in different emulators and a real STE. If you can get Hatari or STeem to output a reasonably precise, synchronized 50 or 60hz the effect is essentially invisible and closely matches output on a real machine.Eero Tamminen wrote: The flicker from color dither "interlacing" is a bit distracting though, at least on my LCD screen, so having in source support also for non-flicker version would be nice, especially if disabling interlacing would increase speed a bit...
I always wondered how multi-field images would look in monochrome. I didn't realize he tried it out.Eero Tamminen wrote: Btw. Johan Klockars' Mgif graphics program had this special ST-high (72Hz) mode where it switched between 3 differently error diffusion dithered monochrome screens to create (a very good) impression of grayscale. That had exactly the same problem although with monochrome dither the luminance difference was of course even larger and 72/3Hz < 60/2Hz i.e. even more flickery.
I think the code for that mode came originally from someone else, but it worked very well in Mgif. I used it even for pre-viewing PovRay raytracing results (8Mhz ST + monochrome monitor might not have been best choice for raytracing thoughdml wrote:I always wondered how multi-field images would look in monochrome. I didn't realize he tried it out.
There's no influence on performance, unless dual-field rendering is dropped for single-field dither-only. That does save some c2p time.Eero Tamminen wrote:If it requires different set of (large) data files, I don't think it's worth the trouble, at least if there isn't also noticeable speed increase on real HW. IMHO programs should do emulator specific stuff only for better debuggability.
Right, now I remember. It's partially my fault, too because a) I was the one who had suggested the "-x" switch to Vincent and b) I haven't done the size tests properly (trying various switches with --traditional-format instead of keeping it in a.out).Eero Tamminen wrote:I've debugged those issues in binaries that Douglas has built, and he's using Vincent's gcc 4.x cross-compiler. Mainly it's a stripping issue, which I've discussed shortly on the mint-mailing list.
Having too many symbols is less of a problem than having too few. If there are too many symbols, you can see that from callgraph.
I have this source and did look through it recently. It's more of a direct conversion of Id's C code than BM, which was derived through DVIEW and other routes. They have concentrated mainly on the drawing stuff (r_???.c) and the conversion is reasonably literal. I didn't notice changes to algorithms from the C version.alexh wrote:I don't know if you would be interested but someone just posted the Source code for DoomAttack, the fastest port of Doom "heavily optimised" for 68020+ based Amiga's.
http://aminet.net/package/game/shoot/DoomAttack_src
I'm sure that BadMood is probably already much more advanced than any of the optimisations here but you never know.
I think it's about half-way towards being optimized now. I'll finish unrolling the raycast code later this evening to see if it can be brought closer to 10% CPU and maybe 8fps. I doubt it will go very much below ~12% though with the scheme I have used.bullis1 wrote:That's seriously impressive performance. I never thought you'd break a 7fps average or so with multiple flat heights and crypto-chrome intact.
interesting.alexh wrote:I don't know if you would be interested but someone just posted the Source code for DoomAttack, the fastest port of Doom "heavily optimised" for 68020+ based Amiga's.
http://aminet.net/package/game/shoot/DoomAttack_src
I'm sure that BadMood is probably already much more advanced than any of the optimisations here but you never know.
I don't think BadMood is missing any game features which would effect speed significantly. In its current state it's fully playable.calimero wrote:and I just watch BadMood on 16MHz+DSP Falcon: I would say it is un pair with 40MHz machines (of course, BadMood is not complete game but...)
You could create a file listing generated code call addresses and symbols at run-time, when that code is generated at startup. If those addresses are absolute, you give that file to post-processor with the "-a" option (file with a list of TEXT section offsets is given with "-r" option).dml wrote:commit_raycontacts is the biggest C function and will be quite a lot of effort to rewrite. It's responsible for turning ray strikes into surfaces, and for generating floor/ceiling spans. It looks like the most expensive area - although it hides calls to generated code for drawing vertical columns. I've been trying to hack up a profiling solution to this so the cost of the column drawing shows separately but haven't been successful yet - probably requires an extra symbol to be loaded/defined at the profiler post-processing stage (but I'm not completely sure yet).
In fact they are less challenging at distance, but more challenging up-close, than PC doom. Although it's still subject to tuning.Eero Tamminen wrote:In general, the enemies in BadMood are slightly dumber / less of challenging than in PC Doom.
I managed to get a fake profile analysis by pasting a label at the first address of the generated code, but I think the result was incorrect because there are many functions of the same type beyond that address, and I think only the first block showed as a function with the fake symbol - the others got absorbed somewhere else.Eero Tamminen wrote: You could create a file listing generated code call addresses and symbols at run-time, when that code is generated at startup. If those addresses are absolute, you give that file to post-processor with the "-a" option (file with a list of TEXT section offsets is given with "-r" option).