|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
![]() |
Goto page Previous 1, 2, 3, 4, 5, 6, 7, 8 Next |
Author | Message |
---|---|
|
![]() |
Loading in 9 tiles of art in a single vblank is not a big deal for the SMS. Making a nice fighting game with 24x24 pixels seems more difficult. | |
![]() ![]() ![]() |
|
|
![]() |
You seem to mean writing each of the 8 bytes to the VRAM to update a single sprite tile in the VBLANK then the method I suggested would be quicker to do the same opration of updating a single tile in this regard as it takes less VRAM port write to do. Which method is better depends how you would go about coding the rest of the fighting game if you need the optimisation for speed then the method I suggested may be used. Maybe a combination of both methods is acceptable loading all the 210 tiles for players until the end of the match e.g. where a "super combo" can be used which updated 9 or more tiles (or maybe most of the tiles in VRAM) for lots of frame updates to the VRAM because speed isn't critical at the end of the final round. What I suggest in my last message was just the basic idea of how to possibly implement a good fighting game I am sure the idea can be tweaked to be improved e.g. you can probably use a few of other unused (56) sprites to improve the graphics in some way. Double zoomed sprites would look better for 24x24 pixel characters in my opinion giving them a 48x48 pixel look. |
|
![]() ![]() |
|
|
![]() |
Preloading the tiles to VRAM reduces the time needed during gameplay, but it’s unlikely that CPU speed would be a bottleneck in this case. However the low tile count for backgrounds would be quite severe. Most games use 256 tiles for backgrounds + status. | |
![]() ![]() ![]() |
|
|
![]() |
The SMS is has a backwards compatability mode with the
colecovision (same mode is used in f-16 game on SMS). I recall I once wrote a 1 by1 pixel smooth scroll routine ,in pure z80 assembly language, for the colecovision which worked by swapping adjacent bytes along a whole vetical edge of the screen to scroll a vertical line of characters. Each byte in the colecovision video ram is accessed but using a read and write to colecovision VRAM. I recall in this scroll routine becomes unusable (i.e. very slow) after 168 VRAM read and writes (i.e. after scrolling 21 characters vertically in 1 pixel increments in software) and my colecovision program did nothing else but scroll vertically. Back to the fighting game. If we were to use VRAM read and writes to the VRAM using the byte by byte update for each sprite tile you suggested it would take 32 VRAM writes per sprite tile and thus at least 32*9=288 VRAM read and writes for one player or 288*2=576 VRAM writes for 2 players. So based on my experience with z80 assembly programming and that the SMS VDP has a mode that is backwards compatible wth the colecovision then updating 18 tiles on the fly using a minimum of 576 VRAM writes (i.e. using the OUT command) will be too slow on the master system -I'd like to be proved wrong though. |
|
![]() ![]() |
|
|
![]() |
You don't need to update both player frames on a single 1/60hz vblank. That's a bit overkill and unnecessary. You interleave the frame updates; player 1 on all even frames, player 2 on all odd frames. That doesn't mean your game runs at 30hz - they came still move around (x/y coords) at 60hz and have game logic at that rate. This is a common technique for beat'em ups too. |
|
![]() ![]() |
|
|
![]() Last edited by xfixium on Sun Jan 22, 2023 8:17 pm; edited 1 time in total |
Update: Finished all remaining sprites. Spent quite a lot of time, once again, on Sagat's stage. I have a proposed final version.
Last thing remaining, adding in Sagat jump kick and jump punch, separating from crouch kick and punch animations. I found places to put the data. I know where the pointers are, and where to change them. I know the variable holding the state for the conditional. I just gotta figure out where to change the code. |
|
![]() ![]() |
|
|
![]() |
I think it looks great mate, good going!! Finding a way to fix Sagat's animation problem would be an amazing feat too. | |
![]() ![]() |
|
|
![]() |
Thanks! Already made some final changes XD Hopefully the animation thing doesn't take too long. |
|
![]() ![]() |
|
|
![]() |
I saw this earlier and was going to comment that it was a shame the arm crease in the fabric had to go.....
But I see you've fixed that..... I love the pink of the clouds, a little tribute to your Sagat sf1 stage that wasn't to be, I love the cloud line too, there's lots of detail. And you managed to have enough leftover tiles to have the ruined pillars on the right look more accurate. If you wanted to you can extend Buddha's length by repeating tiles.... If you like your religous icons long legged that is. You did it, I bet you are glad you are over that hill. |
|
![]() ![]() |
|
|
![]() |
I was going to let it go, but it bothered me, so I just dug in deeper and found the additional tiles.
Thought about it, but I think I prefer it the way it is.
Truer words were never spoken XD I spent way too much time on this stage. |
|
![]() ![]() |
|
|
![]() |
I have put together release candidates for this hacking project.
Champion Edition https://www.pyxosoft.com/projects/sms_sf2/downloads/sf2_hack.bps World Warrior https://www.pyxosoft.com/projects/sms_sf2/downloads/sf2_hack_ww.bps |
|
![]() ![]() |
|
|
![]() |
I tested the WW version. I have 2 questions:
1 - In World Warrior version Chun li dont use fireballs but the hack she is using. This can be disabled? 2 - About Ayutthaya ruins, you did it, my friend! Better than i was expecting. About the pattern over shroud seems that you applied a kind of flower. Dont would be better an original any symbol found in statue´s shroud? But is only a preference matter. Congratulations!!! |
|
![]() ![]() |
|
|
![]() |
Thank you! 1. I'm using World Warrior Edition, in aesthetics only. You are correct, Chun Li's fireball wasn't available, but I also don't think players were able to play as the game's bosses, or even pick the same fighter against one another. If we want to get really technical about it. It's World Warrior in visuals only. 2. Yeah, not enough tiles to convey the pattern in the shroud detail. Although, if someone comes up with a better design that can be used fluidly, using a single tile, and not look like butt, I'd be happy to apply it. |
|
![]() ![]() |
|
|
![]() |
Understood. I mean that you could use only 1 symbol from those from shroud. There is a circle symbol but maybe it be more "ugly" that flower pattern. At least is an original symbol. Anyway your superb work there. |
|
![]() ![]() |
|
|
![]() |
I´ve just finished both versions, world warrior and champion edition.
Impresive work. Congratulations to xfixium and all who helped to do this. I´m try to explain my point of view with not much words. For me no problem with shadows. For me no problem with the statue. For me no problem with nothing ... I think master system street fighter II was empty, but now has arcade soul. Congratulations again, and if in the future you decide to make changes, please be sure you enjoy doing that. You give the players a master piece. THANKS |
|
![]() ![]() |
|
|
![]() |
Congrats xfixium!
I played through the whole ww game (for the first time on the SMS actually). All stages and "sprites" graphics look amazing! It's hard to complain about anything, but... I noticed that the frame of guile laying defeated on the ground was missing a tile, on his head or leg (depending on facing left or right ). Perhaps you did not have enough tiles for that. Another small issue i noticed is the inconsistency of the main font (in-game vs menu/credits). I prefer the in-game font where the font is non-dithered and it includes yellow, orange and red colors. Perhaps it is easy to fix. I'm very honored to be in the credits, although i only delivered a few Guile frames :). I'm looking forward to your next projects :D |
|
![]() ![]() |
|
|
![]() |
Most likely it's because the number of sprites on the scan line exceeded 8. One of the fighters is comprised of sprites, the other is not. The engine doesn't apply flickering, it just will have the default behavior of not drawing the tile, if it overflows. For M. Bison this is painfully noticable.
I'll look into that. Thanks for the feedback. |
|
![]() ![]() |
|
|
![]() |
After reviewing, it looks like I did this to be in line with the source material (SN*S). However I couldn't transfer the same font colors in game, because the original palette is necessary for various projectiles and what not. Also, I noticed the projectile of Ryu P2 is foobarred. Which means his burn and shocked states are messed up as well. Looks like I have to drop a color, or double up the white and lose the yellow. Looks like replacing 0,85,0 with black doesn't hurt too badly. |
|
![]() ![]() |
|
|
![]() |
From graphic changes, they are superb! amazing work!
.... But now we need someone to fix the gameplay and this will be the perfect hack of all time |
|
![]() ![]() |
|
|
![]() |
I want to congratulate you xfixium, what you have done is really a piece of jewelry. Despite the fact that I still suffer playing it, I can feel that it is a little more precise than the original version, visually you have given yourself a job that is worthy of applause, I hope you continue to surprise us with these great advances. you're a machine!
this for me is a dream come true, like the first time i played fatal fury special in gamegear. |
|
![]() ![]() |
|
|
![]() |
Ayeeee, that looks pretty cool. Thanks all for the compliments. I've made fixes to Ryu's P2 palette glitch. I decided to keep the dark blue, and change the white for a light yellow. Looks decent enough. |
|
![]() ![]() |
|
|
![]() |
Final release has been uploaded. (Links on the first page of this topic)
I also have a link to the SMS editor files, and all graphic resources, in a convenient zip file. List of changes since release candidate patch: Ryu: Changed palette to fix P2 hadouken projectile both versions Sagat's Stage: Elongated statue length both versions Added color separation (85, 0, 0) on statue in WW version Changed shroud pattern to be less detailed both versions Moved Statue to the right one tile both versions Balrog's Stage: Changed flooring both versions Updated sparkle colors on CE version Added missing sparkles to WW version Ken's Stage: Floor color changed Cloud graphics changed Sky color and graphics changed CE version Versus Graphics: Centered to the left both versions I think that's it. Thank you all for the support, once again. I'll be taking a break from anything SMS for awhile. |
|
![]() ![]() |
|
|
![]() |
I tested the WW here. I dont believe that you did yet better.
Your work already is divulgated: When i see the jet in Guile´s stage and statue in Ayutthaya ruins i think how talented you are! You made it! |
|
![]() ![]() |
|
|
![]() |
Interestingly enough, seems like the world warrior version is the more popular of the two versions. XD
Thanks for the post, I've watched that channel quite a bit, and love how polished their comparisons are. |
|
![]() ![]() |
|
|
![]() |
It has been so satisfying to watch this hack come together. What a beautiful result. Truly shows what the master system is capable of with efficient use of resources. Two things hobble this game now. The control and the music. I listened to the Game Gear Shinobi Soundtrack after watching the video above and man oh man, the Master System has a capable little sound chip in the right hands. SF2 needs a sound update by someone who knows how to push that chip. |
|
![]() ![]() |
|
|
![]() |
Very true, and that may come later. For both audio and input. At least get the controls so that the special moves are a little easier to pull off. I've become decent at doing the hadouken, because of testing XD. But any charged move I pull off, is purely by accident. Step by step, eventually, I think. |
|
![]() ![]() |
|
|
![]() |
If both of those could be achieved it would be an incredible 8-bit port. I would love to hear music rivaling GG Shinobi. That chip can really push out some great music when given some attention. |
|
![]() ![]() |
|
|
![]() |
On the subject of music, I feel like the music on the Game Boy version of Street Fighter 2 is pretty decent. So if there is CPU time and memory available for an improved soundtrack, that sounds like an achievable goal ! | |
![]() ![]() |
|
|
![]() |
I think you're right, although it's not really my arena. I don't do audio lol |
|
![]() ![]() |
|
|
![]() |
Well Done!
I had some time this morning so played through both versions. It bought a big smile to my face having this finished! I also had a little play around with your SMS EDITOR tool, Very nice. I may be missing something but is there a way to select a tile on the tile map and have it automatically jump to that tile in the tileset box on the right (I tried right clicking and pressing ctrl, alt and so on)? And I'm assuming you can't select large chunks of previously laid tiles and paste them across, like the grass? If not I have a whole new appreciation of you redoing things like Ken's stage moving the boat tile by tile. |
|
![]() ![]() |
|
|
![]() |
The Tilemap editor is pretty basic. It's mostly there for small adjustments. I haven't put the time in for it to be a full blown tile editor. I would say use your fave image/tile editor, then use the Import Sprite Graphics option to import it into SMS Editor. The image doesn't have to be 8 bit, instead it'll auto match colors to the resource's palette. In fact I've never tested an 8 bit image import, now that I think about it XD. Probably should do that. I mainly use the Highlight Count feature. Which will tell you how many times the selected tile is being used in the map, and highlight where it's used. And the Replace Tiles option. To swap out one tile for another. From there I export the map as a .png image, and may further refine it in said image/tile editor of choice. The intended way to use the editor is by selecting a tile from the right as your "brush", and then clicking the tilemap to set the selected tile where you clicked. Again, very basic, and you can only select one tile at a time. There's no undo/redo or the such. Honestly, if I would've used SMS Editor to create tilemaps, I probably would've ended myself a long time ago XD. I typically use Corel Photopaint, Clip Studio Paint, and Aseprite. Primarily Corel. There's tiling programs like Tiled, that do a great job as well, I'd imagine. There are a slew of graphic editing solutions that people love. Use those. And when you think you're finished, let SMS Editer do the heavy lifting of placing it in a ROM, and tell you if you're over the original's tile limit, or not. That being said, SMS Editor is pretty limited, as data is stored in a slew of different ways, but for this hack, it works for graphics editing, at least. Hope that long winded explanation helped. |
|
![]() ![]() |
|
|
![]() |
Forgot to mention, trying to replace audio. There's a thumpin' track put together by Louis the Sega Nerd, check it out:
They've also put together a slew of Castlevania content, which I'll put together in upcoming weeks. Great stuff! |
|
![]() ![]() |
|
|
![]() |
[quote="xfixium"]
Yes it's helped a lot, "Use an external image editor to make the stage and import it, the software will do the rest." Thank you. |
|
![]() ![]() |
|
|
![]() |
Awesome job, thankyou very much for share it | |
![]() ![]() |
|
|
![]() |
I just checked the base game's ROM size, it's about 800KB. Do you think it's possible to expand for rearranged music and possibly more voice samples? | |
![]() ![]() |
|
|
![]() |
Expanding the ROM could allow for many things, like better music, better endings, better voice samples, better intro, and so forth; problem is, it would require someone with ASM hacking experience. |
|
![]() ![]() ![]() |
|
|
![]() |
Yeah, asm hacking experience. Also, not sure how true this is, but I've read some sort of 1 megabyte max load for certain, or most Everdrive carts? Can someone verify the limitation? Not sure I'm connecting the dots correctly on that one. Also, I'm currently trying to put a new PSG from Louis the Sega Nerd into the ROM, and see how that shakes. |
|
![]() ![]() |
|
|
![]() |
1MB was the maximum of any officially released Sega 8-bit mapper.
So for maximum compatibility it would be best to limit to that. I would suppose there could be an emulator or flash cart to support up to 4MB if they wanted to extend the standard Sega mapper to a theoretical limit (256 x 16KB). |
|
![]() ![]() |
|
|
![]() |
Ahhhh, okay. Thank you for the information. |
|
![]() ![]() |
|
|
![]() |
Emulators support 4MB; Everdrive X7 supports up to 3.9MB or so. | |
![]() ![]() ![]() |
|
|
![]() |
Oh wow, 4MB, I thought it was going to be lower. Very nice. |
|
![]() ![]() |
|
|
![]() |
I doubt people are gonna bother making repros of these hacks (Maybe I shouldn't talk so soon), so I don't think going over 1MB would be a problem |
|
![]() ![]() |
|
|
![]() |
Sssssssssss, there will be, most likely. In fact, it seems pretty frequent that hard copies are created, if there's a demand. The Golden Axe hack I created, and Slogra's Sonic hack come to mind, off the top of my head, as examples. |
|
![]() ![]() |
|
|
![]() |
Excellent work!! I just patched a rom and had some fun playing, although I'm terrible at this version of SF2 :D | |
![]() ![]() |
|
|
![]() |
My forte is Assembly optimization, and I know a few tricks for the Z80. If you still have a link for the source code, I may be able to go over it and save a few cycles in the main loop to free up time for better sound. That's assuming that we later find a volunteer who's willing to work on the audio. Or we'll just have a slightly better frame rate. Thanks for letting me take a crack at Guile's artwork, btw. That was actually more challenging than coding, now that I think of it. |
|
![]() ![]() |
|
|
![]() |
Well, Louis does have an awesome version of Ken's stage out there. It can be found here: https://www.pyxosoft.com/projects/sms_sf2/downloads/sf2_ken.psg I did look over the code a bit, my knowledge of anything audio is still lacking. I would like to try and see if the audio could be updated with what Louis was kind enough to offer. I'm just concerned that it may be limited for a reason. You should be able to disassemble the rom using Emulicious. I have done this in the past with Golden Axe, when making changes to the look up code for the compressed ending game art and the magic select screen. If the controls and audio can be improved, I would call that a net win overall. The movement will always be choppy, no matter what optimizations are applied. It's less of a concern to me. |
|
![]() ![]() |
|
|
![]() |
I may have posted this elsewhere on this thread or another. I've always thought that the SMS could offer a 1-on-1 fight game like this by having each fighter be four sprites wide, albeit a bit tall. (Since the stance is usually wider, the leg and arm sprites can be pushed out a bit--not being strictly a 4x8, 4x9, or 4x10 block.) The only thing that would have to be drawn into background tiles by the Z80 are the actual punches, kicks, and fire. Since that's only a few tiles, fewer frames would be dropped, so we'd still see 20-30fps during rapid attacks. Movement of both characters would be smoother, and they wouldn't be confined to 8x8 locations. This would leave more CPU time for audio and music. Using two separate music tracks at the bottom of the stack, we might even let one of the tracks drop off when we run out of cycles so that we don't lose frames. Only when the characters stop for a moment do we get the percussion back, for example. This may require a complete rewrite or even a porting the SF2 assets (or another game) over to a sprite-based engine, then merging punch-kick sprites into background tiles to remove flickering. Just a thought. |
|
![]() ![]() |
|
|
![]() |
Replacing the audio engine with psglib will naturally increase the ROM size and reduce the CPU time spent on audio. You might also use pcmenc to up the sample quality, but they will still stop gameplay while playing. | |
![]() ![]() ![]() |
|
|
SMS Street Fighter 2 ROM Hack
![]() |
BTW, is there anything more I can do to help improve this project?
I'd wanted to add a parallax scrolling effect along the ground, but it looks like there aren't enough free cycles left to accomplish this. |
|
![]() ![]() |
|
|
![]() |
The aforementioned audio and control improvements would help this port a great deal. What Maxim suggested with psglib is what needs to be done. There might be some juicy spaces that the audio driver might fit in to. There's quite a lot of space where I injected the updated credits. That bit of data could be pushed elsewhere, if need be. Decompile, grab wla-dx, and have at it, I say. |
|
![]() ![]() |
![]() |
Goto page Previous 1, 2, 3, 4, 5, 6, 7, 8 Next |