News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: PalMod: color hacking for fighting games  (Read 3283 times)

Preppy

  • Newbie
  • *
  • Posts: 4
    • View Profile
PalMod: color hacking for fighting games
« on: July 11, 2020, 03:30:12 am »
Howdy excellent peoples!

I've been working on a PALette MODification tool for fighting game ROMs for a while now, and realized I should mention it here in case it was useful.

It's meant to make palette editing these ROMs practical for users.  It adds a straight-forward front-end to the hex editing required, with live previews for most sprites.  The supported arcade ROM game list right now is:

* Capcom Vs SNK 2 (CvS2)
* Garou: Mark of the Wolves (Garou)
* Jojo's Bizarre Adventure: Heritage for the Future (Jojos or HFTF)
* Karnov's Revenge
* King of Fighters '98 (KOF98)
* King of Fighters 2002 (KOF02)
* King of Fighters 2002 Ultimate match (KOF02UM)
* Marvel Super Heroes (MSH)
* Marvel Superheroes Vs Street Fighter (MSHvSF)
* Marvel vs Capcom (MvC)
* Marvel vs Capcom 2 (MvC2)
* Samurai Shodown 3
* Samurai Shodown 5 Special
* SNK vs Capcom Chaos(SvC)
* Street Fighter 2: Championship Edition
* Street Fighter 2: Hyper Fighting
* Street Fighter III: Second Impact (2i)
* Street Fighter III: Third Strike (3S)
* Street Fighter Alpha 1 (SFA1)
* Street Fighter Alpha 2 (SFA2)
* Street Fighter Alpha 3 (SFA3)
* Street Fighter Zero 2 Alpha (SFZ2A)
* Super Gem Fighter Mini Mix
* Super Street Fighter II: Super Turbo (ST)
* Super Street Fighter II X / Turbo for GBA
* Vampire Hunter 2
* Vampire Savior
* Vampire Savior 2
* Waku Waku 7
* Warzard / Red Earth
* X-Men: Children of the Atom (COTA)
* X-Men vs Street Fighter (XvSF)

It's pretty easily extensible.  Right now it understands RGB444, RGB555, and RGB666.  If you don't see what you want already in PalMod, it can visualize (as colors) areas of any arbitrary ROM using extension files.  Or if you just want to crib hex offsets, those are on github at https://github.com/Preppy/PalMod/tree/master/palmod/Game .  Or if you know hex offsets for palettes that PalMod doesn't support - please let me know and I'm happy to update.

You can find updates/guides at http://zachd.com/palmod .

Cheers,
-Preppy

edits: updated supported games list as of 2020/10/08
« Last Edit: October 09, 2020, 01:18:46 am by Preppy »

Preppy

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #1 on: September 03, 2020, 04:22:00 pm »
Updated the supported game list as of PalMod 1.65.

One potentially useful thing for people here is that PalMod 1.65 can now generate IPS patch files for your current-to-session changes using Tools : Generate IPS File.  That's meant to help make producing ComROMs easier and the results more portable. :)

thehiredgoon

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #2 on: September 26, 2020, 10:02:12 pm »
Hello. I was curious, how does one go about getting a game supported by palmod? What about implementing features? I am a big 5 Special fan but I noticed you can't edit the portraits.

~Thanks

Preppy

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #3 on: October 09, 2020, 01:12:12 am »
For a game to be supported by PalMod, the more data that can be presupplied the better.  We've made substantial inroads on the Capcom and SNK fighting game libraries so far, and along with that comes nice reference points that make adding other games easier.  Color format is really the first question, and then after that getting the right offsets and such are the next step.

That's correct: for 5 Special we don't have the portrait offsets yet.  There's a guide on the main website as regards how to explore the ROMs to find that kind of data.  Usually somebody gets excited about a game and helps supply the offsets, which we then in turn add to PalMod.  Sometimes even just having a correct reference sprite can be useful, as while a non-indexed sprite might have the wrong color order relative to ROM, it'd still give strong hints as to what to be looking for amongst memory.

edit: We have a PalMod development discord you're welcome to join as well.  DM me and I'll send you the link if you want: that may or may not be relevant to your interests. :)
« Last Edit: October 10, 2020, 01:34:15 pm by Preppy »

alien nose job

  • Jr. Member
  • **
  • Posts: 21
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #4 on: October 15, 2020, 03:14:39 pm »
Hey Preppy,

I'm very glad I checked the Rom Hacking Discussion tab today (this is the first time I do that in about two years) as I could discover your post.

I'm impressed by the number of games you've added !
Palmod is simply the best user/artist friendly tool there is...

For those who don't know Palmod, here are the little things that make it great :

- You can open two palmod windows independently, keeping one as visual reference, or to temporarily stock colors or a variant palette to copy/paste from.

- you can select several colours at once with CTRL + Click, copy/paste numerous colours all at once, just using the every days shortcuts : CTRL+C > CTRL+V

- the interface lets you switch from Photoshop-like Hue, Saturation, Light controls, to Individual RGB sliders.

- You can modify several colours at once

- the sliders recognize the mouse sroll wheel !

After many years editing 3S, dabbing at MVC2, modding Bare Knuckles III, I finally came across the tools to edit Super Metroid (I wanted to play Hyper Metroid but can't stand the palettes).
Man, these are effective, but they are incredibly cumbersome.

I really missed Palmod.   :)

I haven't checked your latest version as of now, so don't mind me if it's already done, or if it's not your plan, here are a couple ideas :

- have you added 3S's portraits, icons, and various bars/interfaces ?
All the addresses, along with graphic content is on ESN's site. Some content has been deleted by clumsy visitors, but I'm sure ESN has a backup for everything else.
Or I may have some more resources on my HDD.

Here :

http://ensabahnur.free.fr/ROM_51_SearchColor/updatePalette.php

- have you already, or do you plan on extending a bit the spritesheet for each character (3S), so that you could see every colour on the palette in use at once ?
Back in the days, ESN proposed me to make some full sprite sheets but I really got overboard with the number of sprites displayed for his own site...
Just a full sprite + Cropped bits for specific colours could do it as that game is pretty complex and an annoying number of hues don't show on the idle stance.
I think I still remember many of them correspond to what move.

- Some suggestions for games (and these are just suggestions, I already have enough games to keep me busy for years) :

- Final Fight 30th anniversary edition
- The Last Blade 2
- Matrimelee

Anyway, thanks for your work on Palmod, I really had a great time playing around with it.

EDIT:
Wow.
You've been adding lots of stuff !
I'm not sure I saw these... if it can be of any use (noticed the "rerip" on the rom name):

http://www.mediafire.com/file/5cbqqlagpsk0ela/3S_extras.zip/file

« Last Edit: October 15, 2020, 04:32:13 pm by alien nose job »

Preppy

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #5 on: October 15, 2020, 07:09:48 pm »
Thanks for the kind words!

> - have you added 3S's portraits, icons, and various bars/interfaces ?

Yes, current versions of PalMod support portraits, select icons, and stages for all characters.

> All the addresses, along with graphic content is on ESN's site.

The team I think has done a pretty good of importing all that data: if there's stuff still missing it's pretty easy to add.  ESN is a gold mine. :)

> - have you already, or do you plan on extending a bit the spritesheet for each character (3S), so that you could see every colour on the palette in use at once ?

Hm.  I've tried to keep the displayed palettes isolated out to discrete sprites where viable, since I think that makes editing easier.  But it's pretty straight-forward to pair palettes (as seen in the default Alex + Flash Chop display for Alex) where particularly useful.

And you can always use an Extras file to display any arbitrary length of palette data.

>  Final Fight 30th anniversary edition

I don't think anybody has started working on that yet.

> - The Last Blade 2

Hm. I  think somebody wrote a guide on how to use PalMod with that, but I haven't heard from them.

> - Matrimelee

Matrimelee is on track to be added in PalMod version 1.68: I just wanted to finish up 1.67 before adding another new game. :)

> Anyway, thanks for your work on Palmod, I really had a great time playing around with it.

Thanks!  It's been fun and I hope it's useful.

One change in very recent 1.67 beta builds is that there's now full "Unknown Game" support: you can load any arbitrary ROM into PalMod, change the expected color format under Settings, and then PalMod will display that ROM for you.  It's pretty useful for ROM exploration, and is pretty easily extensible if people wanted to use PalMod with pretty much any game.

alien nose job

  • Jr. Member
  • **
  • Posts: 21
    • View Profile
Re: PalMod: color hacking for fighting games
« Reply #6 on: October 16, 2020, 04:32:43 pm »
Thanks for your reply, actually, after writing, I had a look into your version 1.66 and it's great !
Congratulations and big thanks to all the people who ported all our old rips, it must have been e huge work.
It's nice to see it's been useful for others :)

I must have missed tons of things you've added since there is so much to look at now, but I noticed a few things that may not be on ESN's that I had found and gave up on adding to the site because I lacked the time.

Here is what I found in my files (sorry if I double some of your entries, sometimes you have the palette and not the art so, I'm not sure we're describing the same thing :

Code: [Select]
Gouki - Fireball + Impact
0x00706A02
0x00706A3C

Gouki - Triple Fireball + Impact
0x00706B02
0x00706B3C

Gouki - Air fireball and Air SA1
0x00706A7E
0x00706ABA

Gouki - SA1 (ground)
0x00706A84
0x00706AFC

Urien - Player 2 Intro suit
0x00706882
0x00706976

Urien - Fireball and Impact
0x00706780
0x00706800

Urien - SA3 Player 1
0x00706700
0x00706780

Urien - SA3 Player 2
0x00706980
0x00706A00

Gouki - SA animation colors part 1 (first 64 colors are also parry colors)
0x00769080
0x00769200

Gouki - SA animation colors part 2
0x00707900
0x00707980

Shin Gouki stage - Entire stage
0x0074D280
0x0074DB00

Shin Gouki stage - tinted
0x0074DB00
0x0074E380

VS Screen - VS LOGO State 1 (grey)
0x0070C780
0x0070C800

Select Screen - Blue Arrows
0x00709AC8
0x00709B00

Select Background - Tinted
0x0070EB80
0x0070EC00

Character Select Screen - 1P and 2P selector cursor rings
0x00709A20
0x00709A30

In Game Misc - Versus Screen
0x0070A680
0x0070B280

Not sure about this one : Versus animation (logo ?)
0x0070A600
0x0070B300

Also, here is a pack with extra graphics in one form or another. It's .png images that I put together in Photoshop and screenshots :

http://www.mediafire.com/file/3c4mee3qorv1yha/3S_extra_rips.zip/file

Btw, sorry about the first pack I posted, I was so happy to see an updated version that I missed some stuff.
This time I was careful to really dig things you missed :)

About the characters, actually you did a great job !
Each char has many sprites, and the combined Alex+chop is great.
But it's not what I meant.
Some colours are really tricky to trigger and show only in a couple frames.
Still if you did something extreme, it pops.
I think you got it all, but I'll try to check.

Sorry for the following wall of text that could sound like ungrateful criticism.
It is not, I really can barely imagine the sum of efforts that went into this and it seems you really strive to make Palmod the ultimate editing program.
It's just things I noticed as I know the game really well if you want to improve even further your program. Not big things by any mean :

Spoiler:
From the top of my head, I may be mistaken, but :

- Ryu and all the shotos have two extra light skin colours showing up a couple frames while throwing forward. I's row 6, column 2 & 3. I think you missed it. So it would be useful to add one of these specific frames.
(There also may be two extra colours on his gi that are tricky to trigger, I think you got them for Ryu at least. Row 2, column 2 & 3 + Row 4, Column 2 & 3.)

- Remy's lightest hair colour : Row 2 , column 3 shows as the white of his eyes during Forward+MK move, this limits what you can do with his hair and it would be nice to have this sprite as well.

- Oro is a very tricky dude.
I think you missed the lightest colour from the top of his head that shows up at the peak of his dragon punch. Row 5, Column 4.

Here it is in action :
https://drive.google.com/file/d/1zdbliR-i8Z16N8p-bj--d7Twz5VbcPaL/view?usp=sharing

I'm also pretty sure you're missing big chunks of his eyes colour cycle.
This part of the pal is also used, visibly in the startup frames of his regular SA2.
One good addition may be the one frame where his whole silhouette flashes.
Also, his hands preceding that move use the same pal as well. Sorry, I don't remember all of it that well.
Check the two spritesheets I posted in the pack with Oro if you want to check it out.
I'm almost sure you could cut out some heads/hands from there, paste it in Palmod and call it a day.

- Ken's backdash triggers a couple leftover pixels from Ryu's headband. It's located above his shoulder (two entries Row 8, column 6 & 7).

- (It's not like anyone will care with the glow effect, but Gill has 7 sets of colours (doubled, eft/right of course). You can see this briefly during Sean's intro on his stage if he shoots a ball. I remember that then Gill would not glow immediately, making it visible. I added screenshots in the pack)

That's all I remember now !
I could ask L_E_T who did tons of edits with me and researched addresses as well if you want to get thorough.
Anyway he'll probably be very glad to see you've done this much.


And here is an idea that I've been thinking of, years ago.
It's about the real hassle taht can be XCopy.
In the pack I linked, three of the images are of Twelve.
It's a big spritesheet, not usable as is, but at the bottom you'll notice I pasted a frame of every char he copies on XCOPY's startup.

This is the very first frame when he uses during this SA, it's pretty quick, but it's there, at the end of his transformation.

Surprisingly, on the original pal, the developers left big chunks of these sprites a flashy green.

Twelve's whole move set uses only the two top rows of his palette.
The Xcopy sprites use the same rows, plus the 6 extra rows left in green at the bottom of the pal.

With some blind guessing, I completed this part of the palette and replaced every green entry with a valid one copy/pasted from the two first rows used by Twelve's body.

All that for one single sprite (well, one for each char he will copy) ?

Maybe not...

I always found editing Twelve's LP palette and not editing, say, Ryu's XCopied LP pal was a throw off.
And taking the time to create 7 new Xcopy palettes for each char when you update Twelve is just nonsense.

I thought a programmer could make an easy workaround.

Maybe you could use the data that I provide (the 3 Twelve spritesheets+the 2 palmod screenshot) at your advantage to automate the process of creating every character's XCopied pal from Twelve's.

To be clear.
You could create a custom LP pal for Twelve using all 64 colours, like I did on one of these spritesheets.
And then a bit of code could probably remap the used colours from Twelve's pal to every other char's corresponding XCopied pal.

My test was just a blind guess game, I did it without the sprites, it could be vastly improved upon with these sprites added to Palmod.

The 7x20 characters Xcopied palettes generated automatically and accurately would be a leap towards accuracy and years stupid work saved.

Well, it's just a thought.

Cheers mate

PS, the unknown game feature would mean I could edit Super Metroid with it ? yeah !
« Last Edit: October 16, 2020, 04:42:31 pm by alien nose job »