News:

11 March 2016 - Forum Rules

Main Menu

STREET FIGHTER 2 DELUXE NES

Started by sebastianangel, October 09, 2020, 10:15:52 AM

Previous topic - Next topic

Cyneprepou4uk

Initial disassembly is complete https://github.com/cyneprepou4uk/Street-Fighter-3

I also added support for writing labels using special Spanish characters.



Now I'll be working on MMC5 and background data expansion.

sebastianangel

Great !!! an extraordinary job :thumbsup:
infinites thanks Cyneprepou4uk

the possibilities of this project are expanded in an incredible way :crazy:

Cyneprepou4uk

#282
Conversion to MMC5 was successful.

While working on it, I've encountered 2 hacking protection routines, which were quite annoying to locate in order to disable.
One of them works like this - https://youtu.be/pafJf_kXSdY

Don't know what the other protection does, and I don't really want to find out, getting destroyed by the girl was enough pain already  :'(




P.S.: to those who did, no need to subscribe, I use this account to upload garbage stuff.

sebastianangel

Congratulations Cyneprepou4uk, it's a masterful job! Thank you very much, your contribution is great, cheer up, I would never have thought of doing something like this on my own because of my little technical ability, I admire your great technical capabilities of programming and reverse technology etc ...  I am very happy I believe everyone who follows this thread they are tremendously grateful to you like me :crazy:

Cyneprepou4uk

#284
@sics, @sebastianangel and the rest of you who is drawing graphics for this game.

Do you guys have a Discord server or Telegram account? I'd like to discuss some technical ideas.

sebastianangel

#285
discord: sebastiangammer # 7450
https://www.romhacking.net

Telegram:
@sebastianangelhack

RealGaea

Quote from: sebastianangel on December 23, 2020, 07:53:49 AM
discord: sebastiangammer # 7450
https://www.romhacking.net

Telegram:
@sebastianangelhack

Nice, nice... We can discuss more ideas and WIPs over there. I sent you a friend request, che.

sebastianangel


bogaabogaa

Quote from: sebastianangel on December 21, 2020, 02:01:21 PM
hello there seems to be an error when finishing playing vs mode with the stage selector that locks the game when returning to the game map :-\

Yes I did not test further this is why I mentioned you should playtest. It is hard to tell what banks will be present every given time. The last two banks are fixed (also full) but the once swapped to $8000-$9fff and $a000-$bfff can be changed any time. I did moved the code to the first swappable section where I hope it is free space and it seems to work now. Also made the sprite a bit bigger so it shows the whole plain. Also moved the sprite away from the very end of OAM since this could had been a other bad idea..

https://www.dropbox.com/s/ivov46z65hynovh/Streetfigher3LevelSelect.zip?dl=0
CV ROM DiscordServer
https://discord.gg/PvFgxRg

sebastianangel

#289
Thank you very much :beer: !!! I will try it again but now if I suppose it will be great, thanks again ;D

I already tested it and it works great :crazy:
:thumbsup: :thumbsup: :thumbsup:

This is a great Christmas gift :)

bogaabogaa

Quote from: Cyneprepou4uk on December 22, 2020, 09:41:08 PM
Don't know what the other protection does, and I don't really want to find out, getting destroyed by the girl was enough pain already  :'(

If you are willing to share I would be interested to hear how the girls beating was accomplished. If you are willing to share. Also thanks for the work. I guess this is a nice xmas present for the graphic team here. Specially for the name table data decompression  :thumbsup:
CV ROM DiscordServer
https://discord.gg/PvFgxRg

Cyneprepou4uk

#291
Decompression doesn't seem enough for me. I'm also going to reserve lots of CHR banks for each stage, and swap them via IRQ, like original game does, but in my case much more often. Just drawing all tiles from the bank into several straight lines one by one, and go to the next bank. Which means that each tile on the screen will be unique.




I didn't really got into HOW the whole thing with the stuff from video works exactly, because I didn't really care at the moment. What surprised me is that this didn't occur before, because I already started to shift code before I made MMC5 conversion*.

Still I decided to keep the code and all the dependences for now, to have some clues regarding AI for later, in case I need to study it for some reason. I just enforced correct protection checks so it won't bother me anymore.

In case you want to activate it to have a closer look, search for 0x01EC0E and 0x01ECE9 in bank_FF.asm. Both these routines basically read stack and check for some fixed return address, in order to determine hacking.




* Well, actually I think I know why, probably because of 0x01E51D. I've noticed this the first day I've made a disassembly, but didn't touch it. I should deal with it before anything else decides to show up.

Edit: done.

shakunetsu

#292
Quote from: sebastianangel on December 23, 2020, 09:50:13 PM
Thank you very much :beer: !!! I will try it again but now if I suppose it will be great, thanks again ;D

I already tested it and it works great :crazy:
:thumbsup: :thumbsup: :thumbsup:

This is a great Christmas gift :)

Hey man I have joined the discord too bad I'm not that good yet with pixel art.

This project is something I always wanted to see happen since before, thank you guys.

Quote from: shakunetsu on April 01, 2018, 07:01:20 PM

SF2 Nes port with Gameboy and Spectrum sprites colored.

- Either porting the stages from GB version or the C64 version but using Gameboy and Spectrum character sprites


Cyneprepou4uk

#293
Just out of curiosity I've looked at what 2nd protection does. It disables hitting an opponent for both players, your punches and projectiles go through the enemy. However projectiles can hit still each other.

The only thing that's working is throws. Other than that everything else seems normal.

December 25, 2020, 10:17:06 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Merry Christmas everyone  >:D




https://github.com/cyneprepou4uk/Street-Fighter-3

Each screen now has unique tiles. Screens were divided in 2 types.

The first type is regular backgrounds that fit into the whole single screen.
Spoiler
[close]

Tile lines 1-4 represent left half of the screen, lines 5-8 represend right half. Then repeat.

file CHR_ROM.chr

C0000-C37FF = title
C3800-C6FFF = player select
C7000-CA7FF = VS
CA800-CDFFF = continue
CE000-D17FF = defeat (same as VS but without VS logo and someone's face beaten)

D1800-D4FFF = ending Chun-Li
D5000-D87FF = ending Ryu
D8800-DBFFF = ending Guile
DC000-DF7FF = ending Blanka
DF800-E2FFF = ending Dhalsim
E3000-E67FF = ending Ken
E6800-E9FFF = ending Balrog
EA000-ED7FF = ending Sagat
ED800-F0FFF = ending Vega




The second type is stages only.
Spoiler
[close]

Lines 1-3 represent the whole line from left to right. 4th line is empty (unused). Then repeat.

file CHR_ROM.chr

80000-85FFF = stage Chun-Li
86000-8BFFF = stage Ryu
8C000-91FFF = stage Guile
92000-97FFF = stage Dhalsim
98000-9DFFF = stage Blanka
9E000-A3FFF = stage Ken
A4000-A9FFF = stage Balrog
AA000-AFFFF = stage Sagat
B0000-B5FFF = stage Vega




Inside "background" folder there are palettes and attributes for each screen. Attributes for stages have nametable attributes for both $23C0-$23FF (first half) and $27C0-$27FF (second half), others for $23C0-$23FF only. File "palette_screen_VS.bin" shares its palette with defeat screen.

The only thing I didn't have time to work on yet is: when the round is over and points are about to be counted, background graphics will break until next round. I'll deal with it next year.



TECHNICAL QUESTION

I need consulting from an expert. Don't know how to debug this, and I'm out of ideas. https://youtu.be/7-I6O3Z2ef0

As you can see on the video, the lines at the same level where players' heads are, they shift 1 pixel left or right depending on which direction you're moving.

Seems like timing problem. But the thing is, I've already made sure that cycles between my IRQ_handler and RTI are the same all the time, and code is executed the same, debugger proves it. Mapper is MMC5. I swap CHR banks 13 times per screen, each 16 lines, but this glitch occurs only on that particular place despite sprites, tiles or palette. At the same time all other swaps work smoothly as planned.

What the hell can that be?

Edit: nevermind, I'm an idiot. The scroll position gets recalculated in the middle of the frame, but I didn't take it into account and used the same RAM address for each CHR switching. I should make a copy of the scroll value from the previous frame and write THAT into register instead.

sebastianangel

Tremendous job !!! :o without a doubt the best Christmas gift! :crazy:
Thank you very much for your dedication and work!
I'll get to work on it right now


BZXGCS

I am very glad to see that the key problem of converting to MMC5 have been solved. Now, Is there any progress has achieved?

sebastianangel

if the advances are enormous thanks to the collaboration and participation of all and the great significant expansion made by Cyneprepou4uk a MMC5
It gives us enormous freedom, Now we are in the process of inserting the new scenarios.I believe 2021 will be the year of street figther deluxe

taking the new designs

convert them to the necessary format insert them into the game and reconvert the colors

sics

#297
As many of you know, I am currently without the Internet, but thanks to sebastianangel I was able to keep abreast of the progress of the project progress, even if only minimally, so I must confess that I have certain inquietudess.

       
  • Mainly, what is the advantage of having the game decompiled?
  • If we consider it later, is it possible to add new characters to the game?
  • Will the endings have the same benefits as the rest of the screens? (Yes)
  • Can we create stages with the space we need, or is there some kind of restriction beyond the known ones?
Since our idea was to redistribute the data from all the game screens, initially using the free space found from 0x13B00, to later take advantage of the space that we were vacating with this process.

We also thought to optimize the CHRs and eliminate all the unused graphics to have that space later.

And I honestly don't know how to carry out these tasks in assembler code. (Although it doesn't seem necessary)

Another issue that is not clear to me is whether they have completely changed the operation of the stages or have simply expanded the number of CHRs that one can count on to carry them out.

Because the previous layout of the graphics, apart from benefiting the compression of the data of the various stages of the game, made it possible to circumvent much of the heavy lifting allowing us to use the NES screen tool to perform the most complicated tasks.

Without forgetting that we were working to create a Python Script that would automate the compression process of the stages.
  • I am curious about how they access the new CHR banks, since as you know previously the graphics of the Chun-Li stage were practically at the limit of what the game will allow to address.
On the other hand, I found a fourth type of code in addition to the ones that song6502 informed us:


Read Sprites
0X   : Manual entry.
7F XX: Repeating pattern. <
8X   : Repeat value.
CX   : Write ascending value.


So I wonder:

Would it be possible to program a similar identifier, which allows creating alternative configurations for the data of a single player, so that when loading different characters that use practically the same skins, such as Ryu, Ken, Akuma or Sheng Long, they can use some alternative graphics?

Example: 7F 2A
7F It establishes that the next code will be data that must be interpreted.
2_ It establishes to which player the data to be read will correspond.
_A Sets the number of sprite groups that must be set aside for that player.

Since this would allow us to solve among other things the change of face between Ryu and Ken that they have requested so much.

Last but not least, thank you very much for all the effort you have put into! :thumbsup:



Edit: The previous translation of this text was of very poor quality and although at this point it was not necessary to update my message I hate leaving things sloppy.
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

Cyneprepou4uk

QuoteMainly, what is the advantage of having the game decompiled?

It's much easier to edit and maintain code that way, rather than keep adding hijack subroutines each time you want to change something.

QuoteIf we consider it later, is it possible to add new characters to the game?

It's possible.

QuoteCan we create scenarios with the space we need, or is there some kind of restriction beyond the known ones?

If by "scenarios" you mean stages, then the only restriction is a limit of CHR. PRG space is not a problem.

QuoteAnd I honestly don't know how to carry out these tasks in assembler code.

You can find someone like bogaa who is interested in your project and has necessary skills. It's not a very hard task to at least separate Ryu from Ken. But I doubt I'll be working on it anymore after I deal with leftover bugs with graphics next year. I can consult romhackers if needed.

QuoteOn the other hand, I am curious about how they access the new CHR banks, since as you know previously the graphics of the Chun-Li stage were practically at the limit of what the game will allow to address.

If you look at the nametable, you will see that tiles id repeat all the time. That's how all stages work. CHR banks change each 16 lines to provide updated tiles.

QuoteAnd I would also like to know if the endings will have the same benefits as the rest of the screens.

Single screens like endings fit into the first category. You can edit the whole screen except first and last 8 pixels IIRC.

QuoteIs it possible to create a similar identifier, to establish groups of sprites that should only be loaded by X player?

Animations have a good simple table, no need to invent anything different here.

sebastianangel

There are still many things to adjust in this scenario, now you can see that I adjust the floor tiles and some other things later I will take care of the color :thumbsup: