This board needs a new name... LINKMAN MADE ME DO IT!!!

Discussion of hacking, editing and developments in Advance Wars games.
Remember, no Rom Requests

This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Kireato » Sat Feb 04, 2006 5:56 am

Yeah, he reminded me that AW1 existed and so I carried on with completing some data, which of course needed me to hack into the rom.

Here's the intel!

284A0C is the start of CO data. End at 2857BB.

Each are made of, err...
*posts*
Yah, just scroll to my explanations.

Nell
74 A3 2E 08 00 00 00 00 30 75 00 00 D6 00 00 00 B5 C1 01 08 99 32 06 08 00 00 00 00 98 6A 28 08 D8 30 2E 08 01 00 00 00 00 00 0A 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 32 00 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08
Andy
7C A3 2E 08 00 00 00 00 30 75 00 00 D1 00 00 00 51 C5 01 08 C5 32 06 08 02 00 00 00 54 6B 28 08 E4 30 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08
Max
84 A3 2E 08 00 00 00 00 30 75 00 00 D2 00 00 00 89 C1 01 08 99 32 06 08 01 00 00 00 10 6C 28 08 F0 30 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 64 49 28 08 64 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 64 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 64 49 28 08 4C 49 28 08 4C 49 28 08 4C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 64 49 28 08 64 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 64 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08 64 49 28 08 58 49 28 08 58 49 28 08 58 49 28 08
Olaf
88 A3 2E 08 00 00 00 00 30 75 00 00 D5 00 00 00 9D C1 01 08 25 33 06 08 03 00 00 00 CF 6C 28 08 FC 30 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 48 45 28 08 D4 45 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 00 00 00 48 45 28 08 48 45 28 08 D4 45 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08
Sami
90 A3 2E 08 00 00 00 00 A8 61 00 00 D9 00 00 00 89 C1 01 08 99 32 06 08 00 00 00 00 8B 6D 28 08 08 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 07 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 28 49 28 08 28 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 40 49 28 08 B8 49 28 08 B8 49 28 08 1C 49 28 08 1C 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 1C 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 40 49 28 08 1C 49 28 08 B8 49 28 08 40 49 28 08 B8 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 07 00 00 EC 46 28 08 78 47 28 08 04 48 28 08 1C 49 28 08 34 49 28 08 34 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 40 49 28 08 B8 49 28 08 B8 49 28 08 1C 49 28 08 1C 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 1C 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 B8 49 28 08 40 49 28 08 1C 49 28 08 B8 49 28 08 40 49 28 08 B8 49 28 08
Grit
98 A3 2E 08 00 00 00 00 30 75 00 00 CB 00 00 00 89 C1 01 08 99 32 06 08 02 00 00 00 60 6E 28 08 14 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 A0 49 28 08 A0 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 A0 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 A0 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 AC 49 28 08 AC 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 AC 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08 AC 49 28 08 C4 49 28 08 C4 49 28 08 C4 49 28 08
Kanbei
A0 A3 2E 08 00 00 00 00 50 C3 00 00 D3 00 00 00 89 C1 01 08 99 32 06 08 02 00 00 00 22 6F 28 08 20 31 2E 08 01 00 00 00 00 00 00 00 78 78 00 78 50 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 00 00 78 78 00 8C 46 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08
Sonja
A8 A3 2E 08 00 00 00 00 30 75 00 00 D4 00 00 00 3D C9 01 08 99 32 06 08 01 00 00 00 CE 6F 28 08 2C 31 2E 08 00 00 00 00 00 00 0F 0F 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 F4 49 28 08 00 01 00 00 00 00 0F 0F 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08 00 4A 28 08
Eagle
B0 A3 2E 08 00 00 00 00 50 C3 00 00 C9 00 00 00 45 C5 01 08 AD 32 06 08 00 00 00 00 8A 70 28 08 38 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 7C 49 28 08 7C 49 28 08 7C 49 28 08 7C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 50 82 00 00 00 48 45 28 08 D4 45 28 08 60 46 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 70 49 28 08 7C 49 28 08 7C 49 28 08 7C 49 28 08 7C 49 28 08
Drake
B8 A3 2E 08 00 07 00 00 40 9C 00 00 CA 00 00 00 29 C9 01 08 99 32 06 08 03 00 00 00 4C 71 28 08 44 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 64 64 00 00 00 48 45 28 08 D4 45 28 08 48 45 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 D0 49 28 08 D0 49 28 08 D0 49 28 08 D0 49 28 08 01 00 00 00 00 00 00 00 64 64 00 6E 5A 00 00 00 48 45 28 08 D4 45 28 08 48 45 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 E8 49 28 08 DC 49 28 08 DC 49 28 08 DC 49 28 08 DC 49 28 08
Sturm (campaign)
C0 A3 2E 08 00 00 00 00 50 C3 00 00 DB 00 00 00 89 CC 01 08 99 32 06 08 03 00 00 00 98 6A 28 08 50 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 82 78 00 00 00 90 48 28 08 D4 45 28 08 90 48 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 96 6E 00 00 00 90 48 28 08 D4 45 28 08 90 48 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08
Sturm (versus)
C8 A3 2E 08 00 00 00 00 50 C3 00 00 DB 00 00 00 A1 CC 01 08 99 32 06 08 03 00 00 00 98 6A 28 08 50 31 2E 08 01 00 00 00 00 00 00 00 64 64 00 50 50 00 00 00 90 48 28 08 D4 45 28 08 90 48 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 01 00 00 00 00 00 00 00 64 64 00 5A 46 00 00 00 90 48 28 08 D4 45 28 08 90 48 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08 1C 49 28 08


Anyhow, I'm sure the bright bulbs should notice that the pattern is the same as in AW2 for the CO data. And guess what? We can blame Flak yet again for something else: the disappearance of a balanced Sturm.

You know... IF IS didn't delete versus Sturm CO data and meteor data...
We might just be able to give our AW2 Sturm a COP. (One knows they didn't delete Sami's own movement chart regardless of the fact her AW2 movement charts are the same as the other CO's.)

You'll also notice quickly the parts for movement charts in clear, snow and rain, then the unit data. (25 units if I counted right. Now it'd be interesting to know how IS added that neotank since there are only 18 units in AW1. :D)

I'm also quite happy to say that:
Sonja's data seems tp show that what each unit points to also contains vision range. (she has different pointers... Haven't checked though)

What I'm much happier about is that I was right in assuming that there was an 'every unit modifier' and that AW1 damage formula shouldn't contain any way to gain HP.

Look at versus Sturm, you'll see a funky pattern 646400005050
Don't bother with the 6464, just jump to 5050 and know that it is 8080 in decimal, or otherwise read as: deals 80% of normal attack and takes 80% of enemy attacks (in AW2 it'd be a 20 defence boost which over 100 makes you gain HP).

Kanbei uses that 'every unit modifier' too. Which explains his round stats.
'
All other CO have power multipliers: dealing 110% damage and taking only 90% of enemy attacks. (So Grit only has a 50% firepower boost to indirects but it shows as 65 because of the 110% attack.)

However Kanbei has a weird base: 787800007850. Haven't tested to see why it's not a 6464 at the beginning. (I assume it's a base...)

Oh and finally most important, (and really only reason I went through the rom) is how luck functions.

Right before the 6464 which we talked about, most COs have 0000, Nell has 0A00 day to day and 3200 during her power and Sonja has 0F0F.

You'll have guessed what it means. Every CO has normally 10 positive luck possibilities. Nell adds 10 more for a total of 20 positive max luck d2d and 60 positive max luck in power. (Surprising, uh?) Sonja can be read as having 15 more positive luck possibilities, so what's the second number?
Simple, it's probably what is substracted from the result of the random generator.

In other words, for Sonja, the random generator cycles from 0 to 24, then substracts 14 and that's that.

It can be compared to AW2 luck system as Sonja having +10/-15 luck. Except that AW2 has 2 different random generator instead of 1. (from what we've seen of testing there is less chance for extremes which is the only thing making Flak and Jugger a bit balanced...)

In other words, Sonja's bad luck was not only made weaker in AW2, but the extremes were also less likely. (And believe me, I've tested tanks against tanks with 70 20 in decimal (which is basically Flak's AWDS COP) and you see the extremes quite a bit...)

And that's about all I've cared to check. I'm sure that we've here got plenty to re-discover. (And probably more possibilities to make some CCOs come to life...)

To your Hex Editors! And beyond! (Or something :3)
User avatar
Kireato
 

Postby Shift Breaker » Sat Feb 04, 2006 7:08 am

Finally, the hackers are working on AW1.

Well done! I like what you've found so far! Maybe soon, you'll be able to convert most of the AW2 COs, only AW1 Style. Considering almost all the New AW:DS COs rely on Terrain & New AW:DS features(Jake[Plains], Rachel[Missiles], Sasha[Singular character increase in money], Javier[Towers], Zak[Roads], Candy[Cities], Von Bolt[Paralysis]), It seems a few of the AW2 COs can be added. (Hachi/Colin[Lower Costs], Jess?[Ground Bonus??], Flak[Luck], Adder[Movement], Hawke?[Damage/Healing??])

Oh, Alright.
WOAHLY CRAP!!! Registered by Shift Breaker. NO STEELING!!
~~
The part where you all shut up happens now. ~ thefalman
I actually like to think of myself as a younger, hipper, more alive Nostradamus. ~ Treed
Shifty, if I wasn't as manly a man as I am, I'd totally ask you out. And hope you'd wear that topless dude to impress me. In another lifetime, perhaps. ~ Nemmy
---
Image
User avatar
Shift Breaker
 
Location: Held hostage at Gunpoint by thefalman
AW Code: 1633-3312-2549
Rank: Master of Unlocking

Postby Mr Dev » Sat Feb 04, 2006 7:16 am

I find that too wall of Hexy, I like it as 16 bytes per line, but that's just me...

Anywho, Hah differences, although this doesn't excite me... >_>
Working on:
Dev's Advance Wars Animations:
Current:
Episode 3 of the search for Snifit.

AW2 ROM Hacking:
Preparations
User avatar
Mr Dev
 
Location: The Moon
Rank: Slaving Away On Something or Another

Postby Kireato » Sat Feb 04, 2006 7:45 am

@Shift Breaker

Oro? I'm not really working on hacking AW1, though I've obviously found the CO data and interpreted some of it. Nearly everything else can be found through that though. (Or quite easily really)

Ah, that thing right before the 'every unit multipler' might just be cost...

On a side note, this reminds me that I wanted to see how the power bar data was stocked in CO data. I should get back to that...

@Rimdev

Of course it doesn't excite you. I don't think many still play AW or want a balanced version of it... And the wall of hex was only to give you the data without having to go to your hex editor.

I just did this to find out the luck stats. :D (and incidently, found that luck and other stuff worked differently in AW1.)
User avatar
Kireato
 

Postby Mr Dev » Sat Feb 04, 2006 7:58 am

Well at least this quashes my rumours of you abanndonning AW hacking... :D
Working on:
Dev's Advance Wars Animations:
Current:
Episode 3 of the search for Snifit.

AW2 ROM Hacking:
Preparations
User avatar
Mr Dev
 
Location: The Moon
Rank: Slaving Away On Something or Another

Postby Xen @ Work » Sat Feb 04, 2006 8:06 am

What I'm really curious about is how Drake gets those 2 defence stars on his ships.....
Xen @ Work
 

Postby Mr Dev » Sat Feb 04, 2006 8:19 am

A special ability?

And I didn't know about that... >_>

Trust a non-AW1 player...

And you work Xen!
Working on:
Dev's Advance Wars Animations:
Current:
Episode 3 of the search for Snifit.

AW2 ROM Hacking:
Preparations
User avatar
Mr Dev
 
Location: The Moon
Rank: Slaving Away On Something or Another

Postby Xen @ Work » Sat Feb 04, 2006 8:48 am

Well, there'd have to be some customers for me to do that.
Xen @ Work
 

Postby Xen @ Work » Sat Feb 04, 2006 8:58 am

Just noticed something (Took this one from Sturm's):

C8 A3 2E 08 00 00 00 00 50 C3 00

Flip the bytes to get C350. Convert that to Dec and you get 50000. I'd imagine that would be the CO power cost.
Xen @ Work
 

Postby Mr Dev » Sat Feb 04, 2006 9:01 am

Well it's in the right place... ^_^ (In accordance with AW2 datasheet)
Working on:
Dev's Advance Wars Animations:
Current:
Episode 3 of the search for Snifit.

AW2 ROM Hacking:
Preparations
User avatar
Mr Dev
 
Location: The Moon
Rank: Slaving Away On Something or Another

Postby GaroNinja » Sat Feb 04, 2006 11:04 am

So Sonja's day to day luck was 10/-15 in AW1?

Then 10/-10 in AW2?

And 10/-5 in AWDS?

Given another game, it'll have disappeared entirely >_>.

Theres Advance Wars hentai? Who the Hell would draw that? There are far better things to draw Hentai of. - Marsillo
Like me. - Blame Game

I was going to post a "Why'd you buy when you could rent?" but then I remembered Austrailia is a gimped continent where people build careers on raping crocodiles and there's no places to rent stuff. - Marsillo
User avatar
GaroNinja
 
Location: A Shining New World

Postby Xenesis » Sat Feb 04, 2006 11:22 am

Well, it's more like (+25% - 15). So, that's why it was always chronically bad.
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Postby Kireato » Sat Feb 04, 2006 8:41 pm

@Xen, yeah I noticed the power cost too. (mainly, it was real easy to link eagle, sturm and kanbei, see that everyone else except for sami and drake have the same.)

Anyhow, I've found quite easily a lot. I've just got to check what some pointers point to. Power special abilities don't seem to be in sight.

CO data construction:
74 A3 2E 08
Name pointer
00 00 00 00
Area for weather % changing
30 75 00 00
Power bar length first 2 bytes
D6 00 00 00
Theme index
B5 C1 01 08
99 32 06 08
00 00 00 00
98 6A 28 08
D8 30 2E 08
01 00
note: here if the 01 is 00 you have hidden HP
00 00
Unknown pointers
00 00
0A 00
luck area
64 64
first part changes cost/ second part, err for show...
00 64
all unit firepower
64
all unit defence
00 00 00
err for some unknown reason 07 in the first byte = Sami capture rate... 05 gives you 11 capture at 10 HP. tis weird.
48 45 28 08
D4 45 28 08
60 46 28 08
weather movement chart (clear/snow/rain)
1C 49 28 08
not a unit
1C 49 28 08
infantry
1C 49 28 08
mech
1C 49 28 08
md tank
1C 49 28 08
not a unit
1C 49 28 08
tank
1C 49 28 08
recon
1C 49 28 08
APC
1C 49 28 08
not a unit
1C 49 28 08
not a unit
1C 49 28 08
artillery
1C 49 28 08
rocket
1C 49 28 08
not a unit
1C 49 28 08
not a unit
1C 49 28 08
AA
1C 49 28 08
missiles
1C 49 28 08
fighter
1C 49 28 08
bomber
1C 49 28 08
not a unit
1C 49 28 08
B copter
1C 49 28 08
T Copter
1C 49 28 08
B ship
1C 49 28 08
cruiser
1C 49 28 08
lander
1C 49 28 08
sub
01 00
follow Sonja pattern again...1rst byte 00 = hidden HP. The second byte, as 01 probably gives piercing vision.
00 00
00 00
unknown (same pattern as earlier/beginning of power)
32 00
64 64
00 6E
5A 00
00 00
same stuff as before
48 45 28 08
D4 45 28 08
60 46 28 08
again movement chart
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
1C 49 28 08
unit pointers.



Note: unit pointers are 12 bytes long
00 : 01 = add 10 G to unit cost 10 = add 160 G
00 : 01 = add 2560 G to unit cost (continuation of above)
00 : can't see change / note to self: try FF instead of 01
00 : can't see change
00 : can't see change
these seem to be unused and quite funny...
64
firepower
64
defence
00
movement
00
vision
00
indirect range (doesn't affect direct units) note ff is less 01 is more
00
fuel (254 = 2 less fuel)
00
defence stars... You can enter what value you care to. (like 5) but it'll only show 1 star of defence for each 10 edditional defence.

In other words, there's still loads to check.
User avatar
Kireato
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Mon Jun 28, 2010 4:10 pm

Thanks for the list, and it's real strange this hasn't been looked into more, given that AW1 seems much easier to balance when compared to AW2 (no Colin, no Sensei, no broken Sturm, no Superpower, and no Neotanks), much less later games.

There seems to be a portion unaccounted for in your description, Kireato:
B5 C1 01 08 99 32 06 08 00 00 00 00 98 6A 28 08 D8 30 2E 08 (Nell)
51 C5 01 08 C5 32 06 08 02 00 00 00 54 6B 28 08 E4 30 2E 08 (Andy)
89 C1 01 08 99 32 06 08 01 00 00 00 10 6C 28 08 F0 30 2E 08 (Max)
9D C1 01 08 25 33 06 08 03 00 00 00 CF 6C 28 08 FC 30 2E 08 (Olaf)
89 C1 01 08 99 32 06 08 00 00 00 00 8B 6D 28 08 08 31 2E 08 (Sami)
89 C1 01 08 99 32 06 08 02 00 00 00 60 6E 28 08 14 31 2E 08 (Grit)
89 C1 01 08 99 32 06 08 02 00 00 00 22 6F 28 08 20 31 2E 08 (Kanbei)
3D C9 01 08 99 32 06 08 01 00 00 00 CE 6F 28 08 2C 31 2E 08 (Sonja)
45 C5 01 08 AD 32 06 08 00 00 00 00 8A 70 28 08 38 31 2E 08 (Eagle)
29 C9 01 08 99 32 06 08 03 00 00 00 4C 71 28 08 44 31 2E 08 (Drake)
89 CC 01 08 99 32 06 08 03 00 00 00 98 6A 28 08 50 31 2E 08 (Sturm C)
A1 CC 01 08 99 32 06 08 03 00 00 00 98 6A 28 08 50 31 2E 08 (Sturm VS)

Comparing the COs, a couple things are striking:
1) These are all offset jumps.
2) Sturm C and Sturm VS are identical except for the first word.
3) Max, Sami, Grit, and Kanbei all share word 1.
4) Everyone except Olaf, Andy, and Eagle share word 2. When paired with word 3, it seems really strange Grit and Kanbei have the same first three words.
5) Words 4 and 5 have their offset jumps increase as order of COs increase. Only Nell and Sturm have the same Word 4 and Word 5 increases by 0xC from CO to CO.

It's late on my end and I haven't chased down these offsets, but it seems really weird that this list hasn't identified offset jumps to CO pictures/descriptions and offset jumps to CO Powers. Could these be it?
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Mon Jun 28, 2010 5:59 pm

Don't specifically know how AW1 handles the text parser compared to AW2 (AW2 inputs a text ID and then loads the text from a pointer array) but it's possible that it can be, yeah.

And I suppose AW1 hacking has been...lax, because no one really cared about a balance hack and I was more interested in AW2 at the time. Still, most of the information should be somewhat transferable.

The most striking thing about the first word for all those pointers, the lowest bit it set (Eg, they're all odd numbers) which is used by the bx instruction to jump to code in THUMB mode, as opposed to ARM mode (if it is even). So they definitely could be the CO Power. Copy one of the Sturm's pointers over the other and see if the Meteor damage changes. Odd numbers usually represent jumps to code simply because a huge amount of data is word aligned (pointer ends in 0, 4, 8, C).

In AW2, all the ones that animate on a per unit basis have the same pointer for the ASM but different pointers for what they animate on.

But yeah, this is stuff that needs to be researched. :P
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Tue Jun 29, 2010 2:43 pm

Haven't looked into that yet, but:

Area for weather % changing
XX YY 00 00
XX = Chance for snow
YY = Chance for rain
Last two bits have no effect. Also, this won't activate except on maps with weather set to random (so not most of Campaign or War Room).

64 64 00 64 64 00 00 00
Bit 1 = Cost
Bit 2 = Multiplier of Repair (so if bit 2 = K, then K / 64 * Unit Cost * .2 is the amount it costs to repair a unit by 2 HP on a city/base/airport/seaport)
Bit 4 = Firepower
Bit 5 = Defense
Bit 6 = Capture Rate; Anything less than 0x5 has the effect of 0x0. 0x7 is Sami's and 0x5 is +1 to capture while 0x6 is +2 to capture. Haven't tested 0x8 and above yet.

Also, in the unit pointers, there are two entirely unused pointers. Both grants normal unit power (100%), but one gives a terrain bonus of 0x0A (1 star) and another a bonus of 0x32 (5 stars). Either this is some CO they didn't have time to code in (Lash, maybe?), but it seems to be readily modifiable, though I haven't tested either yet just to ensure they aren't being referenced elsewhere.
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Tue Jun 29, 2010 8:48 pm

Nice work.

Although I think you mean 'bytes', not 'bits'.
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Tue Jul 06, 2010 6:26 pm

Yeah, that's what I meant. As a correction, for Byte 6 (where the math always rounds down),
0x5 is 9/8x normal capture rate.
0x6 is 5/4x normal capture rate.
0x7 is 3/2x normal capture rate.
0x8 is 2x normal capture rate.
and so on...it probably correlates to a bitwise shift operator.

As for other things,

1. Mission Titles
Search for "Olaf". The first ASCII instance should be around 0x80D90, under the title Olaf's Sea Strike. The missions are listed in order.

2. Battle Dialogue (and More?)
Search for "Olaf". The third ASCII instance should be around 0x28D9C0. This is the dialogue of the first Field Training mission. All the other campaign missions follow from there, in order. The blank space in between the various dialogues may either correspond to the relevant battle maps or the "script" for the dialogue, i.e. which portrait to display and after what conditions to display which line.
0x28D9C0 (Dialogue for all the Field Training missions)
0x29DDCO (Something related to the Field Training missions)
0x2BC270 (Dialogue for all the Campaign missions...note, dialogue goes in order of path: all of Andy's Green Earth missions come first, followed by all of Max's, and then all of Sami's)
0x2CA96C (Something related to the Campaign missions...I'd assume the maps/scripts would also go in order of path)
0x2E2564 (Power quotes...first few will be the generic ones seen in VS/War Room battles, the following ones will be specific to a given Campaign battle)
0x2E2F64 (Jump commands for the above power quotes, most likely to determine which quote is used where) ends at 0x2E3354
0x2E400D (List of descriptions for all units) ends at 0x2E6C4F
0x2E6CD4 (Jump commands for the above descriptions, most likely to determine correspondence to actual units) ends at 0x2E73BB
0x2E73C4 (Nell's blurb after finishing the last Field Training mission) ends at 0x2E749F
0x2E85CC (Victory Terms)
0x2E919C (Jump commands for the above victory terms) ends at 0x2E9223
0x2E9F10 (Menu and CO description data) ends at 0x2EAEBB
0x2ECE4A (Field Training dialogue...not the same as above, for some reason)
0x2EE938 (Jumps related to the Field Training missions)
0x2EE9B0 (Something related to the Field Training missions) ends at around 0x2EFC5F
0x2F58A0 (Hard Mode Text and map/scripts...notice that after each mission's dialogue is the map/script, unlike before, where it was all lumped together) ends at 0x306EA4

3. Unit Data (Needs more investigation)
Each unit takes up 0x70 or 112 bytes. The setup isn't exactly like AW2's setup, but it starts at 0x283030 and ends at 0x283AAB:
3C2C2808 (Name)
442D2808 (Weapon 1)
CC2C2808 (Weapon 2)
03 00 (1st byte = Movement; 2nd byte = Ammo)
02 01 (1st byte = Vision)
01 01 (Min/Max Range)
63 01 (1st byte = fuel; 2nd byte = red squares when you click B is that of a direct combat unit)
01 01 (1st byte = production facility, 0x4 or less for land units, 0x10 for air units, 0x20 for sea units)
00 04
64 00 (10% cost value)
00 00 (1st byte = HP value the AI will heal terminally damaged units to; such units will not attack even if targets are in range)
00 01
00 00
00 00 00 00 (APC/Lander/T-Copter Jump)
00 00 00 00 00 00
01 00 (1st byte = 0x01 on land units only)
01 00 (1st byte = 0x01 on land units only)
00 00 (1st byte = 0x01 on air units; 2nd byte = 0x01 on sea units)
00 00
01 00 (1st byte = 0x01 on land units only)
00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (Fuel expended when stopping on ???/plain/river/mountain/forest/road/city/sea/???/airport/seaport/bridge/shoal/base/???/???/???/???/Reef)
FF 01 02 02 01 01 01 FF 01 FF 01 01 01 01 01 01 01 01 01 FF (Fuel expended when moving over ???/plain/river/mountain/forest/road/city/sea/???/airport/seaport/bridge/shoal/base/???/???/???/???/Reef)
00 (movement type: infantry=00, mech=01, tread=02, tires=03, air = 04, ship = 05, lander = 06)
00 00 00 00 00 00 02 01 01 00 00 00 00 00 00

4. Unit Damage
Unit damage starts at 0x283AD8 and ends at 0x283FEB. It'll start with 0x37, or 55%, which is the base damage any two units at 10 HP do to each other.

The above offsets may be slightly different from someone else's ROM, but if you search for words in ASCII or the relevant unit data, you should find that such offsets are correct within an error of 0x100 bytes.
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Wed Jul 07, 2010 8:15 am

...

00 00 (1st byte = HP value the AI will heal terminally damaged units to; such units will not attack even if targets are in range)


Very interesting. I shall see if there's still an equivalent in AW2!

The above offsets may be slightly different from someone else's ROM, but if you search for words in ASCII or the relevant unit data, you should find that such offsets are correct within an error of 0x100 bytes.

There were two versions of AW1 released in the US, so that's probably the issue.

Still, all this work is good to see - not that much has changed from AW1 to AW2. Also, as far as damage charts for units goes there was a version of the damage table editor for AW1 floating around here too.
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Thu Jul 08, 2010 2:18 pm

Please delete this post.
Last edited by newperson on Thu Jul 22, 2010 2:37 pm, edited 1 time in total.
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Thu Jul 08, 2010 4:38 pm

I guess I'll need to sign in on here soon to at least be able edit my own posts. Please delete my previous post as it contains wrong information (as well as this sentence, since once the above post is deleted, this won't make sense anymore).

Anyways, the difference in the damage charts is that in AW1, all the damage by primary weapons (i.e. weapons that require ammo) are listed first. All the damage by secondary weapons (including ammo-less units like infantry) are listed after the damage dealt by primary weapons.
As a side note, no separate damage slot exists for submerged sub. The game must have code for it elsewhere.

So the order (after omitting all the stupid blank space for glitched units) would be:
Mech Bazooka
Md Tank Cannon
Tank Cannon
Artillery
Rocket
AA
Missiles
Fighter
Bomber
B-Copter Missiles
B-Ship
Cruiser Depth Charges
Sub
Infantry
Mech M-Gun
Md Tank M-Gun
Tank M-Gun
Recon
B-Copter M-Gun
Cruiser Vulcan Cannon
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Fri Jul 09, 2010 3:28 pm

I can just edit the posts to be owned by you if you register an account, so you can edit stuff in and out that you want.

And yeah, looks like each unit probably has a pointer to a damage chart for primary and secondary weapon damages. You could add more simply by using some free space at the end of the ROM I reckon.
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Wed Jul 21, 2010 3:32 pm

OK, that would be nice.

Couple more notes and corrections:
1) The stuff at 0x29DDC0 is the units on every Field Training map and the battle scripts for all of them.
2) The stuff at 0x2CA96C is the units and battle scripts for both Normal and Hard Campaign.
3) The stuff at 0x2F58A0 is the World Map pre-battle scripts during the Campaign. Similarly, the stuff at 0x2ECE4A is the Field Training pre-battle scripts.
4)
3C2C2808 (Name)
442D2808 (Weapon 1)
CC2C2808 (Weapon 2)
03 00 (1st byte = Movement; 2nd byte = Ammo)
02 01 (1st byte = Vision)
01 01 (Min/Max Range)
63 01 (1st byte = fuel; 2nd byte = red squares when you click B is that of a direct combat unit)
01 01 (1st byte = production facility, 0x4 or less for land units, 0x10 for air units, 0x20 for sea units)
00 04
64 00 (10% cost value)
00 00 (1st byte = HP value the AI will heal terminally damaged units to; such units will not attack even if targets are in range)
00 01
00 00
00 00 00 00 (APC/Lander/T-Copter Jump)
00 00 00 00 00 00 01 00 01 00 00 00 00 00 01 00 00 00 00 00 (Terrain types that heal 2 HP)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (Fuel expended when stopping on ???/plain/river/mountain/forest/road/city/sea/???/airport/seaport/bridge/shoal/base/???/???/???/???/Reef)
FF 01 02 02 01 01 01 FF 01 FF 01 01 01 01 01 01 01 01 01 FF (Fuel expended when moving over ???/plain/river/mountain/forest/road/city/sea/???/airport/seaport/bridge/shoal/base/???/???/???/???/Reef)
00 (movement type: infantry=00, mech=01, tread=02, tires=03, air = 04, ship = 05, lander = 06)
00 00 00 00 00 00 02 01 01 00 00 00 00 00 00 (order is Weapon 1 Inf/Veh/Plane/Copter/Ship/Sub; Weapon 2 Inf/Veh/Plane/Copter/Ship/Sub; this seems to correspond the threat level a unit is to other units, but it doesn't seem to change any visuals if you add damage functionality [like changing fighters to damage tanks; you can't add the vehicle picture by making the Weapon 1 Vehicle number non-zero])

5) Not really a discovery, since anyone who knows unsigned addition would know how to do this, but you can lower the cost of specific units for a given CO by using the unit modifiers.

6) Starting at 0x28B9F0 lie the menu jumps for each command type (capture, capture *, fire, etc.) They come in this pattern:
19 00 00 00 XXXXXX08 (Jump that determines function) 000000000000000000000000
YYYYYY08 (Jump that determines picture next to the command?) 35/41 92 01 08 ZZZZZZ08 (Jump that determines name)
To find this on a different ROM, search for "Dive" under ASCII from the beginning. The first instance should be towards the end of a list that contains the other 20 or so menu commands. From there, you can then locate the name jumps in hex.
Theoretically, with this, it should now be possible to add in the kind of movement hacks Xen is currently doing on his AW Project to submarines, landers, and various other units.

I know more, but there are errors when I try to implement the following outside of the original battle. For example, there's a way to make the AI go first with scripting, a way to script the AI's moves (but this takes space per each turn and seems to require fixed human inputs), a way to set battles to not depend on losing the HQ, etc.
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Wed Jul 21, 2010 7:54 pm

Hmm, looks like they categorised a lot of data in the AW1->AW2 jump. Also, you should be calling them 'pointers' unless you specifically know the game code is using that pointer to jump to new code.

Looks like rather than having a dedicated string parser/indexer like in AW2, they just point straight to the location of the text. Still it works.

I've edited the posts too, so feel free to edit them with what you want :)
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby newperson » Fri Jul 23, 2010 6:19 pm

Just as a quick note, how units handle having 0 fuel depends on where they are produced.

If a unit can be created from an airport or seaport, he will die when he reaches 0 fuel. If a unit can only be created from a base, he will not. However, despite what the daily fuel consumption data says, air and naval units will not consume any fuel day-to-day while on airports and seaports, respectively, while ground units hacked to have day-to-day fuel consumption on all terrain types (just like air and sea units) will consume fuel on bases.
newperson
 

Re: This board needs a new name... LINKMAN MADE ME DO IT!!!

Postby Xenesis » Sun Jul 25, 2010 8:43 am

Sounds sensible. AW2 was also really hacky in that regard - units only got terrain defence if they weren't produced at an airport.
HPD wrote:And we don't play for money here, only for ethereal WWN t-shirts nobody's ever going to actually win.

Terragent wrote:I'll keep a sedative handy in case of an outbreak of BATTLE CAR.
User avatar
Xenesis
Tri-Star CO
 
Location: Australia
AW Code: 279297 401795
Rank: Head of Moustache Sciences


Return to Syogun Change

Who is online

Users browsing this forum: No registered users and 1 guest