View Single Post
Old 16 November 2017, 11:04   #111
Master484
Registered User
 
Master484's Avatar
 
Join Date: Nov 2015
Location: Vaasa, Finland
Posts: 525


Here is a quick A500 Metal Slug graphics stress test demo that I put together by copy pasting code from my earlier demos.

ADF download is in the attachment of this post. Just boot the disk and it'll autoload. Disk also includes Blitz source code.

Instructions: press numbers 1-9 to make stuff appear, move the robot with joystick, and press space to delete objects.

---

This demo is for the 512K A500, and it's optimized for low RAM usage.

Because RAM in the "real game" would be so tight, I made the front playfield bitmap 288*224, without any "bob zones" around it. The "bob zones" are usually needed so that we can draw objects whose images are partially outside of the visible screen. But the BOB zones increase the size of the bitmap, and therefore I left them out.

Also, there are no "Queues" or bitmap repair buffers.

Instead, this system is used: Every frame I use a CLS to clean to whole front PF bitmap. This is relatively fast thanks to the small 8 color bitmap. And after this objects are drawn either with "Blit" or "ClipBlit" command, depending on their position on screen; usually Blit is used, but when object goes to the border zone, it switches to the somewhat slower ClipBlit.

But despite the full screen CLS and ClipBlits, speed is comparable to "QBlits" when we draw lots of GFX. Only at low object amounts QBlit is faster (the 50 FPS zone), but at medium object amounts (25 FPS zone) this method is equally fast, and at extreme object amounts I think this method is actually faster.

---

The demo also has an auto-scrolling level loop, some copper effects, and uses all 8 sprite channels to make that 16 color Turrican robot sprite.

I put the sprite in to demonstrate how sprites can always move at 50 FPS, no matter how much slowdown. Also the sprite shows how large objects can be made "for free" with sprites. It uses all 8 channels to make this one 64pix wide sprite. But on AGA this same sprite would cost only 2 channels. So on AGA we could have four 64pix wide sprites like this. ( Just imagine an AGA Street Fighter 2 conversion using big sprites like this )

But so, how does it run?

Well, the FPS for the bobs is locked to 25, and this is what it can draw without slowdown:

15 soldiers
8 normal tanks
1 super tank
7 explosions
25 shots
22 rockets

That means one of those things, not all at once, hehe.

But it's not totally hopeless, and maybe the real game could indeed run at 25 FPS "with slowdowns".

I watched a Neo Geo longplay that used "real hardware", and there were frequent slowdowns in it, triggered by common events like big explosions, lots of bullets, etc. So frequent slowdowns on A500 too would be acceptable.

---

You can run this demo on A1200 too, but the difference won't be that big: basic A1200 can draw some 21 soldiers, 10 tanks, and so on, so the speed increase is some 20 %.

And if we used the AGA 16+16 dual playfield, then I estimate speed to be about the same as 8+8 on OCS.

But on AGA, there are two things that can be done to boost speed, but it's a choice between two things: Firstly, we can use the four 64pix sprites to put some big stuff to screen at almost no cost. Or secondly, we can use the bigger AGA display fetch modes. The fastest fmode boosts drawing speed by some 30 %, but doing this reduces the available sprite channels to just 1. So it's a hard choice, but in most 2D games I would probably go for the sprites. The fmodes are probably most useful in 3D and in isometric games like Syndicate, Populous and stuff like that.

And of course both on A500 and A1200 we can add fast RAM, and this too gives some 30% boost. But if we are trying to prove that Metal Slug "could have been done", then Fast RAM is a no-no, because only a few A500/A1200 owners back then had Fast RAM. And the same goes for adding faster processors and GFX cards.
Attached Thumbnails
Click image for larger version

Name:	MetalSlugDemo.png
Views:	1373
Size:	34.6 KB
ID:	55450  
Attached Files
File Type: zip MetalSlugV2.zip (75.9 KB, 175 views)
Master484 is offline  
 
Page generated in 0.09447 seconds with 12 queries