Welcome Guest [Log In] [Register]
MMSF3 - Card hax; Now with effect editing!
Topic Started: Dec 23 2009, 06:00 AM (739 Views)
Prof. 9
Member Avatar
Moderaptor

Thought I'd give this a try.

The card data starts at 020D18CC (in main memory, just like Rockman EXE OSS). Every card uses up 16 bytes. The order seems to be the same as the card value list.



Bytes 1, 3 and 4 work in a weird way. You need to take the numbers of all the effects you want, and add them up to each other. For example, if you want a Heat-element Mega card, you would use 06.



Byte 1 = card type and element 1

00 = white
01 = standard
02 = mega
03 = giga

00 = null
04 = heat
08 = aqua
0C = elec
10 = wood
14 = F (?)
18 = * (?)
1C = sword

20 = squish card image (mega)
40 = squish card image even more (giga)



Byte 2 = ???

It's always FF?



Byte 3 = element 2 and ???

00 = null
80 = sword



Byte 4 = element 3 and ???

00 = null
01 = break
04 = wind
05 = break and wind (only if there's no element 2)

40 = turns damage on the card into "???"



Bytes 5 and 6 = card image

For example:
0003 = Cannon



Bytes 7 and 8 = card palette

For example:
00A7 = Cannon



Bytes 9 and 10 = card damage

Pretty straightforward.



Bytes 11, 12, 13, 14, 15, 16 = ???

I have no clue what these do. Changing them all to 00 doesn't seem to have any effect.



Where are the card effects? They must be stored elsewhere. I copied all ElecSlash data to Cannon, but it still behaved like a Cannon. I even tried erasing ALL cannon data and it still behaved like a cannon :/
Edited by Prof. 9, May 1 2011, 06:14 PM.
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
MegaRockEXE
Member Avatar
BN Guides Author

So this has problems with working correctly as well? I could not seem to do everything that chip hacking can do in the OSS hack. Interesting to see card sizes for this game. Any idea where it could be in the rom?
The Rockman EXE Zone | YouTube
Profile
Quote
 
Prof. 9
Member Avatar
Moderaptor

mega rock.exe
Dec 23 2009, 01:09 PM
So this has problems with working correctly as well? I could not seem to do everything that chip hacking can do in the OSS hack. Interesting to see card sizes for this game. Any idea where it could be in the rom?
Card sizes? Do you mean this?:

20 = squish card image (mega)
40 = squish card image even more (giga)

These must be set if the card image you're using is Mega or Giga-sized, otherwise it won't display correctly in Folder Edit. (That reminds me, with this info I should be able to make an ASM code to display any card in the Library)

I wonder if the GBA games stored the card data in the main memory as well. They probably did as it would be impractical to load directly from the ROM every time you use a chip or attack...

By the way, what exactly weren't you able to do in OSS?
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
Prof. 9
Member Avatar
Moderaptor

Bump! (OK'd by staff)

Found out some new stuff, and made it easier to read.

0x00 = Library/element (8-bit)
AND 0x3 lsr 0x0 = card color (white, yellow, blue, red) (white has effect in battle, others are visual only)
AND 0x1C lsr 0x2 = primary element (null, heat, aqua, elec, wood, unused, unused, sword (unused))
AND 0x60 lsr 0x5 = Library (standard, mega, giga, unused)

0x01 = ?? (if not FF or 00, doesn't appear in Library???) (8-bit)

0x02 = card flags/secondary elements (16-bit)
AND 0x1 lsr 0x0 = display damage (no, yes)
AND 0x8 lsr 0x3 = appear in Library (no, yes)
AND 0x80 lsr 0x7 = secondary element sword (no, yes)
AND 0x100 lsr 0x8 = secondary element break (no, yes)
AND 0x400 lsr 0xA = secondary element wind (no, yes)
AND 0x4000 lsr 0xE = damage display as "???" (no, yes)

0x04 = card image value (16-bit)
0x06 = card palette value (16-bit)

0x08 = card damage (16-bit)

0x0A = extra damage for 1 attack star (8-bit)
0x0B = extra damage for 2 attack stars (8-bit)
0x0C = extra damage for 3 attack stars (8-bit)
0x0D = extra damage for 4 attack stars (8-bit)
0x0E = extra damage for 5 attack stars (8-bit)
0x0F = extra damage for 6 attack stars (8-bit)

Still no important stuff, like names, effects, what have you. A lot of flags are also undocumented for now. I'll be looking some more into this probably. I'll update this post if I find anything new. Here are the game offsets:

Cards 0x000 - 0x193
Black Ace (U): arm9.bin+0x000D18CC
Red Joker (U): arm9.bin+0x000D18E4

EDIT3: Cards 0x500 - 0x53E
Black Ace: arm9.bin+000D148C
Red Joker: arm9.bin+000D14A4

EDIT: Found card effects! I was able to make a Recover300 act like a Bushido1.

Cards 0x000 - 0x193
Black Ace: arm9.bin+0x000D345C
Red Joker: arm9.bin+0x000D3474

Cards 0x500 - 0x53E
Black Ace: arm9.bin+0x000D3244
Red Joker: arm9.bin+0x000D325C

Each card entry is 8 bytes long:

0x00 = sublevel? (2x 4-bit) (X0 = sublevel, 0X = ?)
0x01 = ?
0x02 = ?
0x03 = Attack type (8-bit)
0x04 = Variable (16-bit) (e.g. for Recover cards, this is the amount they recover)
0x06 = flags?
0x07 = padding?

Haven't really looked into this yet... some of the 8-bit values here might consist out of multiple values. In any case, we can experiment a bit with card effects now.

Also, card names looks like it's going to be easy.

EDIT2: Made a list of all the attack types I could find... no unused attacks unfortunately :(

I've also found the offset for card effects for cards 0x500 - 0x53E (updated above).
Spoiler: click to toggle
Edited by Prof. 9, May 15 2011, 01:59 PM.
:ninja: Follow me on Twitter! :trap: Fork me on GitHub!
Posted Image
Profile
Quote
 
1 user reading this topic (1 Guest and 0 Anonymous)
« Previous Topic · Guides & Research · Next Topic »