Jump to content

Recommended Posts

Posted

So, I decided to have a shot at looking for the move tutor list in BW2 this weekend, as I had nothing better to do (lies). As it could be compressed somewhere (like the TM list is), I decided to extract arm9, arm7 and all overlay9 files.

My method was... kinda crude: Ctrl+F 'C2 01' (Bug Bite) and then look out for any '57 01' (Covet) close to it. Unfortunately, I found nothing. My best shots were overlays 9_0185, 9_0167 and 9_0260, as the three of them have what *could* be move lists, but without making any sense (they don't seem to be level-up lists, for instance) whatsoever. 9_0167 has 'C2 01 EC 01', the latter being Foul Play, another tutor move; 9_0185 has 'C2 01 8F 00' (Bug Bite, Sky Attack); while 9_0260 has 'BA 01 C2 01' (Iron Head, Bug Bite). 9_0260 would be the most interesting one as both are taught by the same tutor in-game.

...Yeah, that's the closest I got to a full tutor list.

Also, I could not extract overlays 9_0001, 9_0009, 9_0014, 9_0017, 9_0054, 9_0072, 9_0095, 9_0152, 9_0153, 9_0169 and 9_0281 so I can't say anything about them. I don't think they contain anything, though: considering the PokeMart lists are in a .narc, I wouldn't be surprised if they had done the same to the tutors. There are 306 of them, however... Has anyone else made any progress on this (maybe knowing where the Pledge tutors were in BW1 data)? I'm not in the mood of extracting all those .narcs right now.

If anyone wants to look for it by themselves, here is the tutor order I found out after comparing a dozen of Pokémon data:

[b]OFFSET 0x0030:[/b]

[b]08-0B[/b] - Special Tutors [i](first bit = farthest to the right, obviously)[/i]

[spoiler]08-1: Grass Pledge (08 02)
08-2: Fire Pledge (07 02)
08-3: Water Pledge (06 02)
08-4: Frenzy Plant (52 01)
08-5: Blast Burn (33 01)
08-6: Hydro Cannon (34 01)
08-7: Draco Meteor (B2 01)
08-8: ---

09-1: ---
09-2: ---
09-3: ---
09-4: ---
09-5: ---
09-6: ---
09-7: ---
09-8: ---

0A-1: ---
0A-2: ---
0A-3: ---
0A-4: ---
0A-5: ---
0A-6: ---
0A-7: ---
0A-8: ---

0B-1: ---
0B-2: ---
0B-3: ---
0B-4: ---
0B-5: ---
0B-6: ---
0B-7: ---
0B-8: ---[/spoiler]

[b]0C-0F[/b] - Tutors #1 [i](Driftveil Tutor)[/i]

[spoiler]0C-1: Bug Bite (C2 01)
0C-2: Covet (57 01)
0C-3: Super Fang (A2 00)
0C-4: Dual Chop (12 02)
0C-5: Signal Beam (44 01)
0C-6: Iron Head (BA 01)
0C-7: Seed Bomb (92 01)
0C-8: Drill Run (11 02)

0D-1: Bounce (54 01)
0D-2: Low Kick (43 00)
0D-3: Gunk Shot (B9 01)
0D-4: Uproar (FD 00)
0D-5: ThunderPunch (09 00)
0D-6: Fire Punch (07 00)
0D-7: Ice Punch (08 00)
0D-8: ---

0E-1: ---
0E-2: ---
0E-3: ---
0E-4: ---
0E-5: ---
0E-6: ---
0E-7: ---
0E-8: ---

0F-1: ---
0F-2: ---
0F-3: ---
0F-4: ---
0F-5: ---
0F-6: ---
0F-7: ---
0F-8: ---[/spoiler]


[b]OFFSET 0x0040:[/b]

[b]00-03[/b] - Tutors #2 [i](Yamaji Tutor)[/i]

[spoiler]00-1: Magic Coat (15 01)
00-2: Block (4F 01)
00-3: Earth Power (9E 01)
00-4: Foul Play (EC 01)
00-5: Gravity (64 01)
00-6: Magnet Rise (89 01)
00-7: Iron Defense (4E 01)
00-8: Last Resort (83 01)

01-1: Superpower (14 01)
01-2: Electroweb (0F 02)
01-3: Icy Wind (C4 00)
01-4: Aqua Tail (91 01)
01-5: Dark Pulse (8F 01)
01-6: Zen Headbutt (AC 01)
01-7: Dragon Pulse (96 01)
01-8: Hyper Voice (30 01)

02-1: Iron Tail (E7 00)
02-2: ---
02-3: ---
02-4: ---
02-5: ---
02-6: ---
02-7: ---
02-8: ---

03-1: ---
03-2: ---
03-3: ---
03-4: ---
03-5: ---
03-6: ---
03-7: ---
03-8: ---[/spoiler]

[b]04-07[/b] - Tutors #3 [i](Seigaiha Tutor)[/i]

[spoiler]04-1: Bind (14 00)
04-2: Snore (AD 00)
04-3: Knock Off (1A 01)
04-4: Synthesis (EB 00)
04-5: Heat Wave (01 01)
04-6: Role Play (10 01)
04-7: Heal Bell (D7 00)
04-8: Tailwind (6E 01)

05-1: Sky Attack (8F 00)
05-2: Pain Split (DC 00)
05-3: Giga Drain (CA 00)
05-4: Drain Punch (99 01)
05-5: Roost (63 01)
05-6: ---
05-7: ---
05-8: ---

06-1: ---
06-2: ---
06-3: ---
06-4: ---
06-5: ---
06-6: ---
06-7: ---
06-8: ---

07-1: ---
07-2: ---
07-3: ---
07-4: ---
07-5: ---
07-6: ---
07-7: ---
07-8: ---[/spoiler]

[b]08-0B[/b] - Tutors #4 [i](Nacrene Tutor)[/i]

[spoiler]08-1: Gastro Acid (7C 01)
08-2: Worry Seed (84 01)
08-3: Spite (B4 00)
08-4: After You (EF 01)
08-5: Helping Hand (0E 01)
08-6: Trick (0F 01)
08-7: Magic Room (DE 01)
08-8: Wonder Room (D8 01)

09-1: Endeavor (1B 01)
09-2: Outrage (C8 00)
09-3: Recycle (16 01)
09-4: Snatch (21 01)
09-5: Stealth Rock (BE 01)
09-6: Sleep Talk (D6 00)
09-7: Skill Swap (1D 01)
09-8: ---

0A-1: ---
0A-2: ---
0A-3: ---
0A-4: ---
0A-5: ---
0A-6: ---
0A-7: ---
0A-8: ---

0B-1: ---
0B-2: ---
0B-3: ---
0B-4: ---
0B-5: ---
0B-6: ---
0B-7: ---
0B-8: ---[/spoiler]

Posted

Oh, I know all of that. What I wanted to find out is where the Tutor list would be in the data; we know the TM/HM list (so that one can edit TM 01 to be Sacred Fire or whatever) is in arm9.bin, but I haven't a clue of the Tutor one. At best, we know it would start with Covet - Bug Bite - Super Fang, I guess? But that's not much, at least not to me.

  • 2 months later...
Posted

on RAM (i was dump from desmume) and i was found structure but i not sure, since i not found in the ROM O.o

*i just pick random from RAM DUMP*

EC01 0000 08 000000 0C 000000

6401 0000 0A 000000 0E 000000

8901 0000 04 000000 02 000000

4E01 0000 02 000000 01 000000

8301 0000 02 000000 00 000000 ---> Last Resort 2 shard , position 0.

well i was similar with this structure :/ is seems stored on narc file ... maybe is not help xD i will check it later ...

  Reveal hidden contents
  • 2 weeks later...
Posted

Well, that's interesting, even though I don't know how to work with RAM data. For some reason, the tutors are out of sequence (it's 3-1-4-2 instead of 1-2-3-4, in the order I posted in the OP), and the rest of the data... doesn't seem to make much sense. But well, at least we know that, wherever the move list is hidden, the moves are grouped by their respective Tutors, so if you find 3-4 moves grouped together, you certainly find the whole list.

Posted

Since Andi didn't give where that RAM was located in the memory (usually in dumps it starts at 0x00000000 rather than 0x02000000), I set out to find it in the RAM myself :P

The string that Andi found is located in the RAM offset : 0x224C048 for the Tutor (edit: this location varies).

scrcmd_shop.c is what is right before it, indicating that script command shop is what's being grabbed.

As for the structure, it looks like u32 & u32 for Move and Shard Quantity.

The script the shopkeeper uses WAS located at 224BC84 (again, it varies), which isn't the typical location for the main scripts. I'm now looking for what script file he's located in. For now, here's a barebones parse of what his script is:

Script 1: 00000014
~~~~~Script 1~~~~~~
SetVarEqVal (0x0028) Var_32 Num_0
SetVarEqVal (0x0028) Var_33 Num_0
SetVarEqVal (0x0028) Var_34 Num_0
SetVar29 (0x0029) Var_33 Var_0
SetVar29 (0x0029) Var_34 Var_1
Logic09 (0x0009)  Var_34
Logic08 (0x0008)  Num_0
Logic11 (0x0011)  Num_5
IfThenGoTo (0x001F) 0xFF jump=0x0000000C
Message1 (0x003C) MID=Num_4 NPC=32785
CompareAtoB (0x0019) A=Var_33 B=Num_246
IfThenGoTo (0x001F) 0x01 jump=0x0000002D
CompareAtoB (0x0019) A=Var_33 B=Num_245
IfThenGoTo (0x001F) 0x01 jump=0x00000020
CompareAtoB (0x0019) A=Var_33 B=Num_244
IfThenGoTo (0x001F) 0x01 jump=0x00000013
CompareAtoB (0x0019) A=Var_33 B=Num_243
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x0000000C
CallRoutine (0x0004) 0x000001DE
GoTo (0x001E) jump=0x00000032
CompareAtoB (0x0019) A=Var_33 B=Num_254
IfThenGoTo (0x001F) 0x01 jump=0x00000013
CompareAtoB (0x0019) A=Var_33 B=Num_253
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x0000000C
CallRoutine (0x0004) 0x00000153
GoTo (0x001E) jump=0x00000006
CallRoutine (0x0004) 0x00000002
EndStdReturn[**] (0x001D)
0x8023
0x0
SetVarEqVal (0x0028) Var_36 Num_0
SetVarEqVal (0x0028) Var_37 Num_0
Logic09 (0x0009)  Var_34
Logic08 (0x0008)  Num_2
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x00000012
Message1 (0x003C) MID=Num_1 NPC=32785
GoTo (0x001E) jump=0x0000000C
Message1 (0x003C) MID=Num_0 NPC=32785
SetVarEqVal (0x0028) Var_36 Num_1
SetVarEqVal (0x0028) Var_37 Num_1
Logic09 (0x0009)  Var_37
Logic08 (0x0008)  Num_1
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x000000BF
CompareAtoB (0x0019) A=Var_36 B=Num_0
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x00000018
Message1 (0x003C) MID=Num_2 NPC=32785
SetVarEqVal (0x0028) Var_36 Num_1
GoTo (0x001E) jump=0x0000008E
CompareAtoB (0x0019) A=Var_36 B=Num_1
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x00000012
CallRoutine (0x0004) 0x00000112
SetVar29 (0x0029) Var_36 Var_32
GoTo (0x001E) jump=0x00000069
CompareAtoB (0x0019) A=Var_36 B=Num_2
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x00000012
CallRoutine (0x0004) 0x00000143
SetVar29 (0x0029) Var_36 Var_32
GoTo (0x001E) jump=0x00000044
CompareAtoB (0x0019) A=Var_36 B=Num_3
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x00000012
CallRoutine (0x0004) 0x0000015F
SetVar29 (0x0029) Var_36 Var_32
GoTo (0x001E) jump=0x0000001F
CompareAtoB (0x0019) A=Var_36 B=Num_255
IfThenGoTo (0x001F) 0x01 jump=0x00000006
GoTo (0x001E) jump=0x0000000C
SetVarEqVal (0x0028) Var_37 Num_0
GoTo (0x001E) jump=0x00000000
GoTo (0x001E) jump=0xFFFFFF2E
Message1 (0x003C) MID=Num_3 NPC=32785
WaitKeyPress (0x0032)
CloseMessage (0x003E)
SetVarEqVal (0x0028) Var_37 Num_0
SetVarEqVal (0x0028) Var_36 Num_0
SetVarEqVal (0x0028) Var_35 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_38 Num_0
SetVarEqVal (0x0028) Var_39 Num_0
SetVarEqVal (0x0028) Var_40 Num_0
Message1 (0x003C) MID=Num_8 NPC=32785
PopYesNoVar (0x0047) Var_38
Logic09 (0x0009)  Var_38
Logic08 (0x0008)  Num_0
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x00000006
CallRoutine (0x0004) 0x0000008E
Message1 (0x003C) MID=Num_9 NPC=32785
WaitKeyPress (0x0032)
CloseMessage (0x003E)
SetVarEqVal (0x0028) Var_40 Num_0
SetVarEqVal (0x0028) Var_39 Num_0
SetVarEqVal (0x0028) Var_38 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_41 Num_0
CallRoutine (0x0004) 0x0000005E
SetVarEqVal (0x0028) Var_41 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_42 Num_0
?????Multi2 (0x00B2) A=0x11F B=0x1 C=0x0 D=0x100 16=0x2A01 E=44928
ScriptText??? (0x00AF) A=Num_5 B=Var_16383 C=Num_2
ScriptText??? (0x00AF) A=Num_6 B=Var_16383 C=Num_3
ScriptText??? (0x00AF) A=Num_7 B=Var_16383 C=Num_255
???? (0x0077)
Logic09 (0x0009)  Var_42
Logic08 (0x0008)  Var_16382
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x0000000C
SetVarEqVal (0x0028) Var_32 Num_255
GoTo (0x001E) jump=0x00000006
SetVar29 (0x0029) Var_32 Var_42
SetVarEqVal (0x0028) Var_42 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_43 Num_0
SetVarEqVal (0x0028) Var_43 Num_1
CloseMessage (0x003E)
0x149
0x8021
0x802B
Logic09 (0x0009)  Var_43
Logic08 (0x0008)  Num_0
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x0000000C
SetVarEqVal (0x0028) Var_32 Num_255
GoTo (0x001E) jump=0x00000006
SetVarEqVal (0x0028) Var_32 Num_0
SetVarEqVal (0x0028) Var_43 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_44 Num_0
SetVarEqVal (0x0028) Var_45 Num_0
0x1A4
0x1A7
CloseMessage (0x003E)
0x14B
0x14E
0x0
0x802C
0x802D
0x14A
0x1A3
0x1A7
Logic09 (0x0009)  Var_44
Logic08 (0x0008)  Num_0
Logic11 (0x0011)  Num_1
IfThenGoTo (0x001F) 0xFF jump=0x0000000C
SetVarEqVal (0x0028) Var_32 Num_255
GoTo (0x001E) jump=0x00000006
SetVarEqVal (0x0028) Var_32 Num_0
SetVarEqVal (0x0028) Var_45 Num_0
SetVarEqVal (0x0028) Var_44 Num_0
End???[*TR] (0x0005)
SetVarEqVal (0x0028) Var_34 Num_0
SetVarEqVal (0x0028) Var_33 Num_0
0x0
0x5200
0x46
0x1800
?????Multi2 (0x00B2) A=0x2800 B=0xA928 C=0x24A9 D=0x224 16=0x2 E=0

-- beyond here it errors out due to not all commands being known 

0x0
CallRoutine (0x0004) 0x6373194D
0x6372
0x646D
0x735F
0x6F68
0x2E70
0x63
0xBE34
0xDA00
0x125
0xDFC5
0xBA84
0x7
0xF5
0x1
0x0
0xD
0x0
0x15
0x0
0x1E58
??? (0x0227) A=Cont_10020 B=Num_546
0xDA24
0x221
0x3024
0x222
0x7124
0x222
0xAE24
0x222
0x183
0x0
End (0x0002)
~~~~~~Finish~~~~~~
0x0
script returned but is still running registered functions

script begins in scriptnarc @ 7CC78, corresponds to script file 6_1247.

Depending on what tutor you talk to, the list that Andi gave will be different. No idea where the table is from though!

shardchange.png

Was able to change the move he gives out. Most likely the text of the menu is set within the script, but when selecting a move it loads the proper text.

Posted

hahahaha sorry for i not give the offset :P EC01 0000 0800 0000 0C00 0000 (on around 0x1D0D60) ... is for blue shard.

is seems that RAM data is combining two or more data, is same as pokemart narc on bw2 too.

04000000 C8000000 (on around 0x24B38C is not including name), is combing pokemart + (sell value*10) from item data. is seems temporary data on ram.

P_black2_U_19_1145.png

wew maximum value is 4,294,967,295 O.o

....

ow is shared data. so is can be different each time.

  • 8 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...