View Single Post
Old 04 December 2016, 12:33   #54
Master484
Registered User
 
Master484's Avatar
 
Join Date: Nov 2015
Location: Vaasa, Finland
Posts: 525
Thanks for the ASM mirroring code examples guys. Maybe if we could somehow integrate methods like this to the Blitz "Shapes", then it might be possible to use them.

In Blitz games, all Blitting is done with "Shapes". Shapes are "Blitz objects", and in the beginning of the game, their image data is first taken from normal Bitmaps that you load into the program. But after putting the Bitmap data to a Shape, the Bitmaps themselves are then typically deleted to save RAM, and from this point onwards only Shapes are used to draw GFX into screen.

So I guess that if we wanted to mirror a Shape with in-line ASM code, we would at least need to know the start address of the image data inside the Shape, it's width and height, and know how the Blitz Shapes actually work "under the hood".

Quote:
One could e.g. use only the basic moves at 50Hz (and store them flipped), while having the special moves in fast ram at 25Hz unflipped.
This is a good idea, and maybe should be used if even ASM couldn't flip frames at 50 FPS. I remember that even the arcade version had slowdowns at certain points, although not with special moves, but during damage/falling down frames...at least in the Capcom Classics Collection version in PS2 this slowdown happens, I don't know the reason for this, but these damage / falling down frames would probably be the best candidates for "slow frames".


Quote:
About SF2. Another idea is to keep only left frames + turning frames and during the turning of player to the right you can just flip that left frames. It depends of how many turning frames you have, then you can divide time of flipping.
Yes, maybe this too could be used for additional speed boost.

One other idea that I just got is to do the mirroring using the Blitz "Scroll" command; we could Blit the Shape into a small external bitmap that is twice it's X size, and then "Scroll" each Y-line of the image into the other half in inverted order, and after this we would read this mirrored data back into the Shape. I don't know how slow this process would be, but I think I'll test it.

Quote:
I'd also argue, that half of what makes Street Fighter 2 the game it is apart from its graphics is the gameplay and especially the enemies AI.

I have done some lightweight fighting game AIs in the past, and I'd say that modelling SF2s enemy AI behaviour is not an easy task.
Good AI is indeed essential. It won't be easy to make, but speed wise I believe Blitz can easily handle it...it's just one complex enemy, that switches between diffrerent "combat tactics" modes (such as defensive and aggressive, and these have sub modes like long range vs close range combat), and these mode change depending on what Player does, and variables such as energy, difficulty level, and so on, with some randomness added in. It'll be time consuming to code, but the end result should run fast enough.
Master484 is offline  
 
Page generated in 0.04462 seconds with 11 queries