Mario With Lasers Posted August 27, 2012 Posted August 27, 2012 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]
Kaphotics Posted August 27, 2012 Posted August 27, 2012 I don't have a direct answer for your question~ Tutor move allowance are in the regular Pokemon /a/0/1/6 personal.narc. (structure is here) Tutor Moves (should match your data) are here \ I'm not sure where this was ripped from. Moves -> PKM here. You mentioned PokeMart data; I ninja edited the above thread with that narc (/a/2/8/2 - PokeMart Data)
Mario With Lasers Posted August 28, 2012 Author Posted August 28, 2012 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.
Andibad Posted November 19, 2012 Posted November 19, 2012 on RAM (i was dump from desmume) and i was found structure but i not sure, since i not found in the ROM *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 i will check it later ... 58010000060000005B010000 060000006701000006000000 820100000600000066010000 0C000000960100000C000000 A00100000C00000051010000 120000005E01000012000000 770100001200000092010000 120000009E01000012000000 9F0100001200000069010000 180000007A01000018000000 830100001800000087010000 180000009401000018000000 140000000200000000000000 AD0000000200000001000000 1A0100000400000003000000 EB0000000600000004000000 010100000A00000008000000 100100000800000007000000 D70000000400000002000000 6E0100000A0000000C000000 8F0000000800000006000000 DC0000000A0000000B000000 CA0000000A00000009000000 990100000A0000000A000000 630100000600000005000000 C20100000200000001000000 570100000200000000000000 A20000000600000006000000 120200000600000009000000 440100000400000004000000 BA0100000400000005000000 920100000600000008000000 110200000400000002000000 540100000400000003000000 43000000080000000A000000 B9010000080000000B000000 FD0000000600000007000000 090000000A0000000D000000 070000000A0000000C000000 080000000A0000000E000000 7C0100000600000001000000 840100000600000000000000 B40000000800000006000000 EF0100000800000003000000 0E0100000800000002000000 0F0100000A00000008000000 DE0100000800000004000000 D80100000800000005000000 1B0100000C0000000B000000 C80000000A0000000A000000 160100000A00000007000000 210100000C0000000E000000 BE0100000A00000009000000 D60000000C0000000C000000 1D0100000C0000000D000000 150100000400000003000000 4F0100000600000004000000 9E010000080000000A000000 EC010000080000000C000000 640100000A0000000E000000 890100000400000002000000 4E0100000200000001000000 830100000200000000000000 140100000A0000000D000000 0F0200000600000006000000 C40000000600000007000000 910100000800000009000000 8F0100000A00000010000000 AC010000080000000B000000 960100000A0000000F000000 300100000600000005000000 E70000000600000008000000 2E0000000100000031000000 010000002F00000001000000 340000000100000030000000 010000002D00000001000000 520000000300000053000000 030000005400000003000000 5500000003000000E8000000 080000000901000008000000 0A010000080000000B010000 080000004601000008000000 470100000800000020020000 08000000D50000000C000000 E60000000C00000014010000 0C000000160100000C000000 1D0200000C00000021010000 100000002201000010000000 230100001000000024010000 100000002501000010000000 260100001000000010010000 100000001101000010000000 D6000000100000000F010000 100000002102000010000000 22020000100000001E020000 100000002302000010000000 DC0000001800000029010000 180000001F01000018000000 13010000180000000E010000 180000003200000018000000
Mario With Lasers Posted December 1, 2012 Author Posted December 1, 2012 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.
Kaphotics Posted December 2, 2012 Posted December 2, 2012 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 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! 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.
Andibad Posted December 2, 2012 Posted December 2, 2012 hahahaha sorry for i not give the offset 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. wew maximum value is 4,294,967,295 .... ow is shared data. so is can be different each time.
LEGOanimal22 Posted August 21, 2013 Posted August 21, 2013 Do the moves go by number of shards required?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now