krabobmkd / amigamame

Port of Mame106 (2006) to Amiga classic 68060, using bebbo gcc6.5 crosscompiler and cmake.
GNU General Public License v2.0
4 stars 0 forks source link

Beta3 Operation Wolf #12

Closed Jeff-Bootonic closed 1 month ago

Jeff-Bootonic commented 2 months ago

Sprites disappear in the background.

Also, when I compile the latest code, Irem games like Gunforce 1 and 2 have graphic glitches, unlike in the released version of Beta 3. What could be causing this?

krabobmkd commented 2 months ago

I'll have a look tonight. drawgfx() and pdrawgfx() calls have changed since beta 2 , and these changes has been automatized , sometimes the replaced code compiles but is wrong. Or the call is missing accolades, Or priority index param is misplaced or missing the "or 1<<31" because it was a pdraw () .

So basically correcting this is finding the concerned vidéo drivers in vidhwrd and rewrite param settings before calls to drawgfx ()

krabobmkd commented 2 months ago

Bingo, Operation Wolf corrected, vidhrdw/taitoic.c line 1334 priority ? 0xfc : 0xf0 // priority_mask becomes: priority ? (0xfc|(1<<31)) : (0xf0|(1<<31)) // priority_mask This is funny, it gives sprites priority against playfield 1 and 2, totally amiga-like.

I'll do a Beta3b in some days if a few things can be corrected quickly. I guess you are happy if you can recompile !

...I explain: old function pdrawgfx() (for priority draw) used to just override drawgfx() and add the last bit with |(1<<31) to give the order of priority(I guess, what pdraw does.), now for some reason , there is a unique function drawgfx() with a struct pointer and optional params, and no more pdraw() and mdraw() . same thing with drawgfxzoom, pdrawgfxzoom(), mdrawgfxzoom(). There should be no other "horizontal api change" after that. This is the first step of the "draw call very close to pixel work" change I have in mind, because there is a hell of useless tests and switches in this function.

Other cause of bugs can be that I forced all 68000 to have 32bit bus instead of 16b, and removed adress range masking. All video drivers paired to a 68000 "override 16b write handlers" to "verify if the video register changes", and If I get it right "32bit write handlers" should do the same if needed. Another cause of bug in Beta3, I hope rare, is write./read handler missing the fact that parameters are now passed by registers. That's the cause for "demon's world" loss, which have a very unique CPU with ugly code.

... I've just tested GunForce 1 & 2 from branches krb/dev106, they look ok, maybe I have trouble with merging beta106 ?

Jeff-Bootonic commented 2 months ago

I'm glad to have this emulator, so no rush. Sprite priorities are fixed; I recompiled the krb/dev106, but the problem with Gunforce is still present, as I said, no rush you'll get it sorted out. I noticed a speed increase in general for many games, great work.

While we're at it, Truxton II has a -WORK RAM ERROR- and doesn't load into the game.

Out Zone doesn't load into the game after inseting coins.

Air Buster, no sprites at all only background layers are present.