justin wong came up with this interesting ratio system for marvel vs capcom 2. instead of players being able to pick 3 top-tier characters and making a large portion of the cast competitively unviable, he created this table where each character corresponds with a point value. a player has a maximum of 7 points to "spend" in choosing characters.
my idea was to hack the character select screen of mvc2 to force this ratio system. my experience with hacking arcade games is with super puzzle fighter 2 for cps2 - I did a hack which changes drop patterns and damage values as well as adds some quality-of-life changes. so the jump from 68k to sh4 has been an interesting one!
here is my progress thus far:
memory address P1 cursor char: 0x0c2fb188
memory address P1 cursor row: 0x0c2fb15c
memory address P1 cursor col: 0x0c2fb15e
PC which writes new character c1c5636
P1 cursor row: 0x0c2fb2be
P1 cursor col: 0x0c2fb2bc
the next step is to get into some sh4 asm hacking.
I need to find a place in memory to store P1 and P2's current ratio totals. should need just 1 byte each.
then I need to append a table to the end of the ROM with the ratio data.
the table could look like (from the start) 22322441...22411, with 0 for 19, 1A, 1B.
so when the lookup happens the game can cross reference the new character select space with this table.
preliminary work would be to add the character's respective ratio table value to the player's current ratio total. so, for example, if player 1 selects ryu, zangief, and guile, their current ratio total byte should be 0x08. if p1 selects spiral, iron man, and sentinel, it should be 0x0F.
I've got a couple different ideas on how to prevent a player from selecting a character that is greater than their current ratio amount left:
A) insert code before the button press of selecting a character which checks the cursor character's ratio data against 7-player current ratio total. if <0, break past the selecting code.
B) modify the cursor movement code to add a check. currently, for example, if you've already selected a character, and you try to put your cursor on that character, the cursor will jump past them.
it would be very helpful if anyone could point me towards resources they're using for disassembly/hacking. I'm not sure what format this ghidra plugin is looking forhttps://github.com/lab313ru/ghidra_sdc_ldr
and it seems ghidra doesn't have sh4 support, so not sure how to go about that.
I got this tool "SuperH disassembler" and it seems pretty useful. currently trying to track down the binary code within the naomi files. it seems like since the USA version of mvc2 (mvsc2u) is just one file, there's a good chance that this is the main binary.
at around 0c2f8cd8 (JP) is the text like "press start button" and "credit(s) X"
so you can see there's a %d, I was going to see if I could change this to display some arbitrary byte of memory instead of the number of credits inserted. that could be a way to display remaining points per player. the text would need to be enabled even when 2 players are present - currently it is only present while 1 player is present at character select.
thanks for looking!