Jump to content

Kaphotics

Helpful Member
  • Posts

    6937
  • Joined

  • Last visited

  • Days Won

    331

Posts posted by Kaphotics

  1. More on Giving Items: Using Flags and more Subscripts!

    One of the cool things about B2W2 is that there's a bunch of built in secondary scripts you can call by using variables.

    For example, we'll look at a GiveItem script that goes beyond just giving an item; it's super easy to set an NPC up with this kind of script.

    A bit of background on the 0x001C command:

    The 0x001C command instructs the game to branch out to another script file to continue the event. By setting variables in the main script, the secondary script can then execute a common routine with ease. If you ever need to do the same kind of script again, you just call the script again! Basically it's a subfunction you can use at any time.

    The secondary script we'll be using is 0x0AF0; this script uses 7 defined variables to give one (+quantity) item, check and set a flag, and play 3 unique messages based on the flag setting.

    Example Script that uses 0x001C 0x0AF0:

    iqp2u.png

    =====

    Analyzing the script to use in a desired custom script:

    Here's the raw hex for a main script that calls 0x0AF0:

    Special Flag Dependent GiveItem ; Example in Accumula Town (BalmMushroom Giver)
    
    2E 00 			LockAll
    
    [b]09 00 00 80 		Using Variable 8000 (var 0)
    09 00 01 80 		Using Variable 8001 (var 1) 
    09 00 02 80 		Using Variable 8002 (var 2)
    09 00 03 80 		Using Variable 8003 (var 3)
    09 00 04 80 		Using Variable 8004 (var 4)
    09 00 05 80 		Using Variable 8005 (var 5)
    09 00 06 80 		Using Variable 8006 (var 6)
    
    2A 00 00 80 xx xx 	Item to Give (16 bit hex)
    2A 00 01 80 xx xx	Quantity to Give (16 bit hex)
    2A 00 02 80 xx xx 	Event Flag to consider [16bit]
    2A 00 03 80 xx xx 	First Message [before giving]
    2A 00 04 80 xx xx 	Post  Message [After  giving]
    2A 00 05 80 xx xx 	After Message [if player talks to again]
    CC 00 06 80 		Sets Variable 6 as "Item"
    
    1C 00 F0 0A 		Calls the script which uses these 7 defined variables
    
    0A 00 06 80 		Clear the variables at the end.
    0A 00 05 80 
    0A 00 04 80 
    0A 00 03 80 
    0A 00 02 80 
    0A 00 01 80 
    0A 00 00 80 [/b]
    
    30 00 			After returned, wait moment
    2F 00 			ReleaseAll
    02 00			End
    

    Now a somewhat translated to readable via the Lua script:

    LockAll (0x002E)
    
    [b]Logic09 (0x0009)  Var_0
    Logic09 (0x0009)  Var_1
    Logic09 (0x0009)  Var_2
    Logic09 (0x0009)  Var_3
    Logic09 (0x0009)  Var_4
    Logic09 (0x0009)  Var_5
    Logic09 (0x0009)  Var_6
    
    SetVarEq2A (0x002A) Var_0 Num_580	BalmMushroom
    SetVarEq2A (0x002A) Var_1 Num_1		Quantity 1
    SetVarEq2A (0x002A) Var_2 Num_335	Flag to Set/Check
    SetVarEq2A (0x002A) Var_3 Num_0		Intro Message
    SetVarEq2A (0x002A) Var_4 Num_1		PostItem
    SetVarEq2A (0x002A) Var_5 Num_1		After Message
    SetVarQualItem (0x00CC) Var_6
    
    CallStd (0x001C) 0x0AF0
    
    Logic0A (0x000A)  Var_06
    Logic0A (0x000A)  Var_05
    Logic0A (0x000A)  Var_04
    Logic0A (0x000A)  Var_03
    Logic0A (0x000A)  Var_02
    Logic0A (0x000A)  Var_01
    Logic0A (0x000A)  Var_00[/b]
    
    WaitMoment (0x0030)
    UnlockAll (0x002F)
    End (0x0002)

    If you want this in a custom script, all you have to do is define your variables and call 0x0AF0 the same way the example script does. Be sure to define an item, quantity, flag, and the 3 text messages that are to used. The secondary script does the rest of the work for you!

    Just for kicks, here's the layout of 0x0AF0 so you can see how it works.

    PlaySound (0x00A6) id=0x547
    FacePlayer
    Readflag (0x0010)  Var_2
    Logic08 (0x0008)  Num_1
    Logic11 (0x0011)  Num_1
    IfThenGoTo (0x001F) 0xFF jump=0x00000014
    Message2 (0x003D) 0x6 0x80 mid=Var_5 view=0 type=0
    WaitKeyPress (0x0032)
    CloseMessage (0x003E)
    GoTo (0x001E) jump=0x00000063
    Message2 (0x003D) 0x6 0x80 mid=Var_3 view=0 type=0
    CloseMessage (0x003E)
    ?????? (0x00B7) A=Var_0 B=Var_1 C=Var_16
    Logic09 (0x0009)  Var_16
    Logic08 (0x0008)  Num_0
    Logic11 (0x0011)  Num_1
    IfThenGoTo (0x001F) 0xFF jump=0x00000018
    SetVar29 (0x0029) Var_8 Var_0
    SetVar29 (0x0029) Var_9 Var_1
    CallRoutine (0x0004) 0x0000022F
    GoTo (0x001E) jump=0x00000012
    SetVar29 (0x0029) Var_8 Var_0
    SetVar29 (0x0029) Var_9 Var_1
    CallRoutine (0x0004) 0x000002A1
    Message2 (0x003D) 0x6 0x80 mid=Var_4 view=0 type=0
    WaitKeyPress (0x0032)
    CloseMessage (0x003E)
    SetFlag (0x0023)  Var_2
    EndStdReturn[**] (0x001D)
    SetVar29 (0x0029) Var_8 Var_0
    SetVar29 (0x0029) Var_9 Var_1
    CallRoutine (0x0004) 0x0000027B
    EndStdReturn[**] (0x001D)
    End (0x0002)

    0x0029 = copyvar (variable to be set, variable to copy)

    As you can see, it's a somewhat hefty script. By making this a script the game can call up any time, the programmer doesn't have to include all this inside the main script.

  2. [video=youtube;ncbJHL36FTQ]

    Uses 0x001C 0x0AF5

    A little tutorial on how to edit the scripts and have a customized script in game with current tools. It's suggested that you read the first few posts of this thread to understand what certain commands are and how everything works via hex.

    If you want a list of what commands are currently known, the interpreter Lua script can be opened with notepad to see how each one works.

  3. I'm thinking that the group of 4 unused is for set move; currently the game just grabs the current level moves since none are special. I'd also think that one would set nationality similar to the HGSS Magicarp (Foppa). EVs might be in there too.

    Ability=3 would be rand(0,1) for ability, and 4 would be rand of all 3 abilities similar to how we've seen with wondercards. There might be a shiny prevention flag or a shiny always flag, too. No time for me to test all of this though :P

    It's pretty easy to edit with tinke by just swapping out each bin

  4. You were already answered.

    Poketransfer is only to get Gen IV pokemon to a Gen V game. Try setting the location to Route 23, and the origin as White 2.
    And you mean to say these arent hacking?

    http://www.pokecheck.org/?p=search&=0&tid=%40Agonist&=&=0&=0&=1&=0&=0&=0&=0&=0&=0&=0&=0&=0&=0&=0

    http://www.pokecheck.org/?p=detail&uid=2837860 ----This one especially was received before both BW2 japanese and english was released.

    Stop being Hypocritical and please answer the Question.

    Plus, those are legit. He knows how to RNG and they're just a false positive because he purposefully RNG'd his ID/SID for that.

  5. 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.

  6. Nurse is a possible female player Trainer Class, in the "Restoring" section of the OP my example has a picture with a nurse player.

    Meh

    The one I suggested. This is because fabricating a trainer from the ground up is too much work (for me at least). The memory write AR code type would be the way of doing it.

  7. It's because

    >Region		Unova (Black 2)
    >Hatched/Met	Poké Transfer Lab

    Unknown encounter in the LA, did you perchance hatch it inside the lab for no good reason? There's no way to get an origin hex of B2W2 on a transferred mon.

    I checked the OT/ID/SID of your Dugtrio, and it matched a HG trainer of the same gender ~ it wasn't associated to any account [so it's private as well].

    https://www.pokecheck.org/?p=search&tid=50462%2F210&notpub=1

    This doesn't seem like it's Pokécheck's fault.

  8. B2/W2 Script Parser

    Reads the memory of the game and translates the script language to meaningful instructions similar to XSE and other scripting programs.

    I primarily made the script to help me see how commands are used and help further our understanding of each command. No, it does not make the scripts, only interprets the hex.

    I've made a ton of progress and the whole script is 90,000 characters! Too big to include in this post.

    http://dl.dropbox.com/u/12206225/pporg/bw2scr/scrparse.lua

    Old bare below.

    local rshift, lshift=bit.rshift, bit.lshift
    local wd,ww,wb=memory.writedword,memory.writeword,memory.writebyte
    local rd,rw,rb=memory.readdwordunsigned,memory.readwordunsigned,memory.readbyteunsigned
    
    mb=function(SRP)
    return rb(SRP) 
    end
    
    mw=function(SRP)
    return rb(SRP)+rb(SRP+1)*0x100 
    end
    
    md=function(SRP)
    return rb(SRP)+rb(SRP+1)*0x100+rb(SRP+2)*0x10000+rb(SRP+3)*0x1000000
    end
    
    local gt,sf=gui.text,string.format
    local table={}
    local start=md(0x02000024)+0x459A4
    local startscr=md(md(0x02000024)+0x459A4)+md(0x02000024)+0x0459A8
    local SRP=start
    local goscrp=0
    local iterhead=0
    local iterscr=0
    local scrt={}
    local scrnum=0
    local scrindex=mw(md(0x02000024)+0x41B32)
    local printiter=0
    local catcherror=1
    local itercatch=290
    
    
    
    function main()
    --Notify when analysis is starting:
    	if SRP==start then	
    		print(""..string.format("~Script File %d~",scrindex))
    	end
    
    while goscrp==0 and mw(SRP)~=0xFD13 and iterhead<35 do 
    	readval=md(SRP)
    	scrt[scrnum] = readval
    	if rd(start) > 4000 then 
    		print(""..sf("~Error Catch, Start Read Error~",curscr))
    		goscrp=-1 end
    	SRP=SRP+4
    	scrnum=scrnum+1
    	print(""..sf("Script %d: %08X",scrnum,readval))
    	iterhead=iterhead+1
    end
    
    if scrnum>0 then gt(1,00,sf("%08X",scrt[0])) end
    if scrnum>1 then gt(1,10,sf("%08X",scrt[1])) end
    if scrnum>2 then gt(1,20,sf("%08X",scrt[2])) end
    if scrnum>3 then gt(1,30,sf("%08X",scrt[3])) end
    if scrnum>4 then gt(1,40,sf("%08X",scrt[4])) end
    
    --Notify that Lua is ready to parse the script data
    if mw(SRP)==0xFD13 and goscrp==0 then
    	---print(""..sf("Finished Offset Parse")) 
    	goscrp=1					--proceed to next phase
    	SRP=SRP+2
    	curscr=1
    	end
    
    --Begin 
    while goscrp==1 and scrnum>=curscr and catcherror==1 and iterscr<300 do
    		printiter=printiter+1
    	if printiter>20 or iterscr>itercatch then 
    		print(""..sf("~Error Catch, Command Read Error~",curscr))
    		catcherror=0
    		break 
    	end
    
    	print(""..sf("~~~~~Script %d~~~~~~",curscr))
    		iterscr=1
    		done=0
    	while done==0 and md(SRP-2)~=0x0002 and (mw(SRP)~=0x5544 or mw(SRP)~=0x0000 or mw(SRP)~=0x4652) and iterscr<300 do
    	if printiter>20 or iterscr>itercatch then 
    		print(""..sf("~Error Catch, Command Read Error~",curscr))
    		catcherror=0
    		break 
    	end
    		cmd=mw(SRP)
    		SRP=SRP+2
    			if cmd==0x02 then 
    			print(""..sf("End (0x0002)"))
    			curscr=curscr+1
    			if scrnum>=curscr then print(""..sf("~~~~~Script %d~~~~~~",curscr)) 
    			else done=1
    			end
    
    		elseif cmd==0x04 then
    			rt=md(SRP) SRP=SRP+4
    			print(""..sf("CallRoutine (0x0004) 0x%08X",rt))
    
    		elseif cmd==0x05 then 
    			print(""..sf("End???[*TR] (0x0005)")) 
    
    		elseif cmd==0x08 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("Logic08 (0x0008)  %s%d",fa,u16a))
    
    		elseif cmd==0x09 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("Logic09 (0x0009)  %s%d",fa,u16a)) 
    
    		elseif cmd==0x0A then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("Logic0A (0x000A)  %s%02X",fa,u16a))  
    
    		elseif cmd==0x10 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("Readflag (0x0010)  %s%d",fa,u16a)) 
    
    		elseif cmd==0x11 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("Logic11 (0x0011)  %s%d",fa,u16a)) 
    
    		elseif cmd==0x19 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("CompareAtoB (0x0019) A=%s%d B=%s%d",fa,u16a,fb,u16b))
    
    
    		elseif cmd==0x1C then
    			std=mw(SRP) SRP=SRP+2
    			print(""..sf("CallStd (0x001C) 0x%04X",std))
    
    
    		elseif cmd==0x1D then
    			std=mw(SRP) SRP=SRP+2
    			print(""..sf("EndStdReturn[**] (0x001D)"))
    
    		elseif cmd==0x1E then
    			jump=md(SRP) SRP=SRP+4
    			print(""..sf("GoTo (0x001E) jump=0x%08X",jump))
    
    		elseif cmd==0x1F then
    			logic=mb(SRP) SRP=SRP+1
    			jump=md(SRP) SRP=SRP+4
    			print(""..sf("IfThenGoTo (0x001F) 0x%02X jump=0x%08X",logic,jump))
    
    		elseif cmd==0x23 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("SetFlag (0x0023)  %s%d",fa,u16a))  
    
    		elseif cmd==0x24 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("ClearFlag (0x0023)  %s%d",fa,u16a)) 
    
    		elseif cmd==0x26 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("SetVarEqCont (0x0028) %s%d %s%d",fa,u16a,fb,u16b)) 
    
    		elseif cmd==0x27 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("SetVar27 (0x0027) %s%d %s%d",fa,u16a,fb,u16b)) 
    
    
    		elseif cmd==0x28 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("SetVarEqVal (0x0028) %s%d %s%d",fa,u16a,fb,u16b)) 
    
    		elseif cmd==0x2A then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("SetVarEq28 (0x002A) %s%d %s%d",fa,u16a,fb,u16b)) 
    
    		elseif cmd==0x2E then 
    			print(""..sf("LockAll (0x002E)"))  
    
    		elseif cmd==0x2F then 
    			print(""..sf("UnlockAll (0x002F)"))
    
    		elseif cmd==0x30 then 
    			print(""..sf("WaitMoment (0x0030)"))
    
    		elseif cmd==0x32 then 
    			print(""..sf("WaitKeyPress (0x0032)"))
    
    		elseif cmd==0x33 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("EventMessage (0x0033) id=%s%d",fa,u16a))
    
    		elseif cmd==0x34 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("GreyMessage (0x0034) id=%s%d view=%s%d",fa,u16a,fb,u16b))
    
    		elseif cmd==0x35 then 
    			print(""..sf("CloseEventMessage (0x0035)"))
    
    		elseif cmd==0x36 then 
    			print(""..sf("CloseGreyMessage (0x0036)"))
    
    
    
    		elseif cmd==0x38 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u8a=mw(SRP) SRP=SRP+1
    				if u8a/0x8000>=1 then fb="Var_" u8a=u8a%0x4000
    				elseif u8a/0x4000>=1 then fb="Cont_" u8a=u8a%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("BubbleMessage (0x0038) %s%d %s%d",fa,u16a,fb,u8a)) 
    
    		elseif cmd==0x39 then 
    			print(""..sf("CloseBubbleMessage (0x0039)"))
    
    		elseif cmd==0x3C then
    			u8a=mb(SRP) SRP=SRP+1
    			u8b=mb(SRP) SRP=SRP+1
    			mid=mw(SRP)  SRP=SRP+2
    				if mid/0x8000>=1 then fm="Var_" mid=mid%0x4000
    				elseif mid/0x4000>=1 then fm="Cont_" mid=mid%0x4000
    				else fm="Num_"
    				end
    			npc=mw(SRP) SRP=SRP+2
    			view=mw(SRP) SRP=SRP+2
    			type=mw(SRP) SRP=SRP+2
    			print(""..sf("Message1 (0x003C) MID=%s%X NPC=%d",fm,mid,npc))
    
    		elseif cmd==0x3D then
    			u8a=mb(SRP) SRP=SRP+1
    			u8b=mb(SRP) SRP=SRP+1
    			mid=mw(SRP)  SRP=SRP+2
    				if mid/0x8000>=1 then fm="Var_" mid=mid%0x4000
    				elseif mid/0x4000>=1 then fm="Cont_" mid=mid%0x4000
    				else fm="Num_"
    				end
    			view=mw(SRP) SRP=SRP+2
    			type=mw(SRP) SRP=SRP+2
    			print(""..sf("Message2 (0x003D) MID=%s%X",fm,mid))
    
    		elseif cmd==0x3E then 
    			print(""..sf("CloseMessage (0x003E)"))
    
    		elseif cmd==0x3F then 
    			print(""..sf("CloseMessage2[*] (0x003F)"))
    
    		elseif cmd==0x43 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("BorderMessage (0x0028) id=%s%d color=%s%d",fa,u16a,fb,u16b)) 
    
    		elseif cmd==0x44 then 
    			print(""..sf("CloseBorderMessage (0x0044)")) 
    
    		elseif cmd==0x47 then
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("PopYesNoVar (0x0047) 0x%04X",u16a))
    
    
    		elseif cmd==0x48 then 
    			u8a=mw(SRP) SRP=SRP+2
    				if 	u8a/0x8000>=1 then 	f1="Var_"  u8a=u8a%0x4000
    				elseif 	u8a/0x4000>=1 then 	f1="Cont_" u8a=u8a%0x4000
    				else 				f1="Num_"
    				end
    			u8b=mw(SRP) SRP=SRP+2
    				if 	u8b/0x8000>=1 then 	f2="Var_"  u8b=u8b%0x4000
    				elseif 	u8b/0x4000>=1 then 	f2="Cont_" u8b=u8b%0x4000
    				else 				f2="Num_"
    				end
    			u16a=mw(SRP) SRP=SRP+2
    				if 	u16a/0x8000>=1 then 	fa="Var_"  u16a=u16a%0x4000
    				elseif 	u16a/0x4000>=1 then 	fa="Cont_" u16a=u16a%0x4000
    				else 				fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if 	u16b/0x8000>=1 then 	fb="Var_"  u16b=u16b%0x4000
    				elseif 	u16b/0x4000>=1 then 	fb="Cont_" u16b=u16b%0x4000
    				else 				fb="Num_"
    				end
    			u16c=mw(SRP) SRP=SRP+2
    				if 	u16c/0x8000>=1 then 	fc="Var_"  u16c=u16c%0x4000
    				elseif 	u16c/0x4000>=1 then 	fc="Cont_" u16c=u16c%0x4000
    				else 				fc="Num_"
    				end
    			u16d=mw(SRP) SRP=SRP+2
    				if 	u16d/0x8000>=1 then 	fd="Var_"  u16d=u16d%0x4000
    				elseif 	u16d/0x4000>=1 then 	fd="Cont_" u16d=u16d%0x4000
    				else 				fd="Num_"
    				end
    			u16e=mw(SRP) SRP=SRP+2
    				if 	u16e/0x8000>=1 then 	fe="Var_"  u16e=u16e%0x4000
    				elseif 	u16e/0x4000>=1 then 	fe="Cont_" u16e=u16e%0x4000
    				else 				fe="Num_"
    				end
    			print(""..sf("Message3 (0x0048) %s%d %s%d %s%d %s%d %s%d %s%d %s%d",f1,u8a,f2,u8b,fa,u16a,fb,u16b,fc,u16c,fd,u16d,fe,u16e))
    
    
    		elseif cmd==0x4B then 
    			print(""..sf("CloseAngryMessage (0x004B)"))
    
    		elseif cmd==0x4C then 
    			u8a=mb(SRP) SRP=SRP+1
    			print(""..sf("???? (0x004C), 0x%02X",u8a))
    
    		elseif cmd==0x64 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u32a=md(SRP) SRP=SRP+4
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("Movement[***] (0x0064) A=%s%d color=%s%d",fa,u16a,fb,u32a)) 
    
    		elseif cmd==0x65 then 
    			print(""..sf("WaitMovement (0x0065)"))
    
    		elseif cmd==0x68 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("StoreHeroPosition (0x0068) A=%s%d B=%s%d",fa,u16a,fb,u16b))
    
    		elseif cmd==0x6C then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("???? (0x006C)  %s%d",fa,u16a)) 
    
    
    		elseif cmd==0x6D then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa=""
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb=""
    				end
    			u16c=mw(SRP) SRP=SRP+2
    				if u16c/0x8000>=1 then fc="Var_" u16c=u16c%0x4000
    				elseif u16c/0x4000>=1 then fc="Cont_" u16c=u16c%0x4000
    				else fc=""
    				end
    			u16d=mw(SRP) SRP=SRP+2
    				if u16d/0x8000>=1 then fd="Var_" u16d=u16d%0x4000
    				elseif u16d/0x4000>=1 then fd="Cont_" u16d=u16d%0x4000
    				else fd=""
    				end
    			u16e=mw(SRP) SRP=SRP+2
    				if u16e/0x8000>=1 then fe="Var_" u16e=u16e%0x4000
    				elseif u16e/0x4000>=1 then fe="Cont_" u16e=u16e%0x4000
    				else fe=""
    				end
    			print(""..sf("SetOWPos (0x006D) npc=%s%d x=%s%d y=%s%d z=%s%d dir=%s%d",fa,u16a,fb,u16b,fc,u16c,fd,u16d,fe,u16e))  
    
    		elseif cmd==0x74 then
    			print(""..sf("FacePlayer"))
    		elseif cmd==0x85 then
    			u16a=mw(SRP) SRP=SRP+2
    				if 	u16a/0x8000>=1 then 	fa="Var_"  u16a=u16a%0x4000
    				elseif 	u16a/0x4000>=1 then 	fa="Cont_" u16a=u16a%0x4000
    				else 				fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if 	u16b/0x8000>=1 then 	fb="Var_"  u16b=u16b%0x4000
    				elseif 	u16b/0x4000>=1 then 	fb="Cont_" u16b=u16b%0x4000
    				else 				fb="Num_"
    				end
    			u16c=mw(SRP) SRP=SRP+2
    				if 	u16c/0x8000>=1 then 	fc="Var_"  u16c=u16c%0x4000
    				elseif 	u16c/0x4000>=1 then 	fc="Cont_" u16c=u16c%0x4000
    				else 				fc="Num_"
    				end
    			print(""..sf("TrBattle (0x0085) Opp1=%s%d Opp2=%s%d Logic=%s%d",fa,u16a,fb,u16b,fc,u16c))
    
    		elseif cmd==0x8C then 
    			print(""..sf("EndBattle (0x008C)")) 
    
    		elseif cmd==0x8D then
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("SetVarBattleResult (0x008D) %s%d",fa,u16a))
    
    		elseif cmd==0x8E then 
    			print(""..sf("DisableTrainer (0x008E)")) 
    
    		elseif cmd==0xA6 then
    			u16a=mw(SRP) SRP=SRP+2
    			print(""..sf("PlaySound (0x00A6) opp1=0x%X opp2=0x%X logic=%d",u16a,u16b,u16c))
    
    
    
    		elseif cmd==0xCB then
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    			print(""..sf("StoreRand (0x00CB) %s%d rand(0x%d)",fa,u16a,u16b)) 
    
    
    		elseif cmd==0xCC then
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("SetVarQualItem (0x00CC) %s%d",fa,u16a))
    
    		elseif cmd==0xCD then
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("SetVarQual???? (0x00CD) %s%d",fa,u16a))
    
    
    
    		elseif cmd==0x227 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("??? (0x0227) A=%s%d B=%s%d",fa,u16a,fb,u16b))
    
    		elseif cmd==0x24F then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa=""
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb=""
    				end
    			u16c=mw(SRP) SRP=SRP+2
    				if u16c/0x8000>=1 then fc="Var_" u16c=u16c%0x4000
    				elseif u16c/0x4000>=1 then fc="Cont_" u16c=u16c%0x4000
    				else fc=""
    				end
    			u16d=mw(SRP) SRP=SRP+2
    				if u16d/0x8000>=1 then fd="Var_" u16d=u16d%0x4000
    				elseif u16d/0x4000>=1 then fd="Cont_" u16d=u16d%0x4000
    				else fd=""
    				end
    			print(""..sf("????? (0x024F) A=%s%d B=%s%d C=%s%d D=%s%d",fa,u16a,fb,u16b,fc,u16c,fd,u16d))  
    
    		elseif cmd==0x276 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			u16b=mw(SRP) SRP=SRP+2
    				if u16b/0x8000>=1 then fb="Var_" u16b=u16b%0x4000
    				elseif u16b/0x4000>=1 then fb="Cont_" u16b=u16b%0x4000
    				else fb="Num_"
    				end
    			print(""..sf("??? (0x0276) A=%s%d B=%s%d",fa,u16a,fb,u16b))
    
    		elseif cmd==0x2C5 then 
    			u16a=mw(SRP) SRP=SRP+2
    				if u16a/0x8000>=1 then fa="Var_" u16a=u16a%0x4000
    				elseif u16a/0x4000>=1 then fa="Cont_" u16a=u16a%0x4000
    				else fa="Num_"
    				end
    			print(""..sf("??? (0x02C5) A=%s%d",fa,u16a))
    
    
    
    
    
    
    		else
    		print(""..sf("0x%X",cmd))
    		iterscr=iterscr+1
    		end
    	end
    
    
    
    
    
    
    
    
    end
    
    if goscrp==1 and scrnum<curscr then 
    print(""..sf("~~~~~~Finish~~~~~~")) 
    goscrp=2 end
    
    
    gt(1,70,sf("Total Scripts: %d",scrnum))
    gt(1,80,sf("Attempts: %d",iterhead))
    
    gt(1,90,sf("SRP: %08X",SRP))
    if goscrp==2 then gt(1,100,sf("~~~~~Finish~~~~~")) end
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    end
    gui.register(main)

    Some examples of what it creates in the Console window:

    http://pastebin.com/raw.php?i=72nRf1aa

    http://pastebin.com/raw.php?i=fRBaRPkv

    http://pastebin.com/raw.php?i=gMRLPeuR

    http://pastebin.com/raw.php?i=TpgbtWnF

    To use it, the script file must be already loaded in game. Talk to an NPC that uses a script from the script file so that the game will have it loaded in the memory. Some locations don't work, I've only tested it indoors.

    I'll be updating it when I get time, school comes first :) Unknown/Un-programmed commands can throw off the parse so in general don't trust anything when it starts reporting hex.

  9. Would someone be able to provide an example of the code needed to set the first Visitor to one of the game's default visitors.

    Why don't you just fill up every shop with a keeper, and then change their roles with an AR code? Much simpler that way. Use the method I posted to get a new pointer value for the code, then set the shop setting with the other part of the line.

    It's just simple math which can be done with a calculator or websites like Wolfram Alpha.

    0x920 + 0x246AC + 0xB4 = XXXXX

    (helper 1), and choose the shop type.

    94000130 FFFB0000
    B2000024 00000000
    10025080 000000B4
    10025144 00000104
    10025208 00000032
    100252CC 000000D2
    10025390 00000082
    10025454 00000122
    10025518 000000DC
    100255DC 0000012C
    D2000000 00000000

    Changes all the shop types, keeps the good inventories but their level isn't set. You don't have to do any referring, just use the services

    We don't know how visitor shop open preference is determined, so this is the best you will get.

  10. These are the files that the PokeStock extracted. Are you saying that these files are duds?

    Nah, they just include data they don't need to. Certain parts of the save file aren't used for anything and are essentially wasted between each block, especially in the download region (not the main/backup).

  11. Is there any way to edit the non downloable tournaments? I'm not sure if anyone is working on creating tournaments; I had an idea about making a tourney which has the rivals/playable characters as the participants (Lucas, Dawn, Hilbert, Hilda, Nate, Rosa, Barry, Hugh) just a random thought.

    I've parsed their teams, they do reside in the narcs. In the General ROM info thread I give their location.

    /a/2/5/3 ********* pwtpoke2 - 1000 files, first bunch are for PWT (second set)

    /a/2/5/4 ********* pwttr1, 68 files - world tournament trainer pkm choices 1v1

    /a/2/5/5 ********* pwttr6, 68 files - world tournament trainer pkm choices 6v6

    /a/2/5/6 ********* pwtpoke - world tournament pkm sets (first set)

    /a/2/5/7 ********* 1000 files, pokemon sets pretty much filled ~still diff (subway?)

    /a/2/5/8 ********* pwt vgc top4 event, relic of dev testing which is unaccessible but I converted it here.

    Problem is, I'm pretty sure that modding the underlying tournament structure would require edits to the overlays. No idea which one; that's the issue. If you want, you can just replace their sprites/text and just swap up which teams they choose such that you get the lineup you desire for your hack.

    Might as well just make a PWT Download using alder and such, then change the sprites and text of the special trainers.

×
×
  • Create New...