Jump to content

ShadowMario3

Member
  • Posts

    14
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by ShadowMario3

  1. Posting my finding on the offset locations for the Registered Teams. It seem that the Japanese version (G&S) only has 10 registered teams per mode, which puts it in line with the English version. Also will be clarifying the Pokemon data structure. First the is a registered team is made using OP's post as a base:

    Registered parties are 0x180 each: 0x10 header + six 0x3C pokemon structures + 2 bytes padding, 4 byte footer and 2 byte checksum
    
    0x00 Header:
        0x0 1 True if team is present (0x00 if no team)
        0x1 1 Padding 0x00
        0x2 2 trainer ID (default 0x0000)
        *0x4 12 Trainer name (GB encoding, 0x50 terminated + remaining byte padding 0x00) (default 0x5000)
     
    0x10 Start of party pkmn, 0x3C each; uses a similar GB storage format:
    
        0x00 Index number of the Species 				1 byte
        0x01 Held Item 						1 byte
        0x02 Move 1							1 byte
        0x03 Move 2							1 byte
        0x04 Move 3							1 byte
        0x05 Move 4							1 byte
        0x06 OT ID							2 bytes
       *0x08 Experience points (1 byte 				4 bytes
       	 extra padding at beginning)		
        0x0C HP EV Data						2 bytes
        0x0E Atk EV Data						2 bytes
        0x10 Def EV Data						2 bytes
        0x12 Spd EV Data						2 bytes
        0x14 Spc EV Data						2 bytes
        0x16 DV Data						2 bytes
        0x18 Move 1's PP values  					1 byte
        0x19 Move 2's PP values  					1 byte
        0x1A Move 3's PP values  					1 byte
        0x1B Move 4's PP values  					1 byte
        0x1C Friendship or Hatch Counter				1 byte
        0x1D Level							1 byte
        0x1E Status**    						2 bytes
        0x20 Pokérus Status						1 byte
        0x21 Caught data						2 bytes
        0x23 1 Padding?
       *0x24 Nickname (GB encoding, 0x50				12 bytes 
       		 terminated) (1 extra padding byte) 
       *0x30 OT name (GB encoding, 0x50 				12 bytes
       		 terminated; 0 if rental) 
             	 (4 extra padding bytes)
    	
    
    0x17A Footer 'P3v0' (0x50337630) 				4 bytes
    0x17E Checksum (UByte 8 bit) 					2 bytes
    	  Computes Header + party data + footer
    
    *If OT Name is short, 0x50 is used to fill in rest (7 characters total in English, 5 in Japanese).
    
    *Japanese version is mostly the same except for one difference in Nickname and OT Name. 
    Nicknames can only be 5 bytes, has 0x50 terminator, and 6 bytes of padding. Same with OT names. Both will have 0x00 padding to fill 12 bytes each.
    
    **Status is set to 0 when the pokémon is registered or in box. Set to 1 if Egg in box. Set to 4 if it is a rental Pokemon in a registered team. There is one byte padding afterwards.
    

    Thanks to @Kaphotics for figuring out which byte Pokérus is. For example, D1 = strain 13 and 1 day left.

    Use this chart for English Nickname and OT: https://bulbapedia.bulbagarden.net/wiki/Character_encoding_in_Generation_II#English

    For Japanese Nickname and OT: https://bulbapedia.bulbagarden.net/wiki/Character_encoding_in_Generation_II#Japanese

    Here are the locations for the Registered Teams (same in English and Japanese versions):

    	Anything Goes	Little Cup	Poké Cup	Prime Cup	Gym Leader Castle	Vs. Rival
    01	0x0		0xF00		0x1E00		0x2D00		0x4000			0x4F00
    02	0x180		0x1080		0x1F80		0x2E80		0x4180			0x5080
    03	0x300		0x1200		0x2100		0x3000		0x4300			0x5200
    04	0x480		0x1380		0x2280		0x3180		0x4480			0x5380
    05	0x600		0x1500		0x2400		0x3300		0x4600			0x5500
    06	0x780		0x1680		0x2580		0x3480		0x4780			0x5680
    07	0x900		0x1800		0x2700		0x3600		0x4900			0x5800
    08	0xA80		0x1980		0x2880		0x3780		0x4A80			0x5980
    09	0xC00		0x1B00		0x2A00		0x3900		0x4C00			0x5B00
    10	0xD80		0x1C80		0x2B80		0x3A80		0x4D80			0x5C80

    Offsets for Boxes in Professor Oak's Lab:

    English boxes are 0x4D8 each:   Japanese boxes are 0x750 each:
    
    Box 1	0x5E00			 Box 1	 0x5E00
    Box 2	0x8000			 Box 2	 0x8000
    Box 3	0x84D8			 Box 3	 0x8750
    Box 4	0x89B0			 Box 4	 0x8E60
    Box 5	0x8E88			 Box 5	 0x9590
    Box 6	0x9360			 Box 6	 0x9CC0
    Box 7	0x9838			 Box 7	 0xA3F0
    Box 8	0x9D10			 Box 8	 0xAB20
    Box 9	0xA1E8			 Box 9	 0xB250
    Box 10	0xA6C0				
    Box 11	0xAB98				
    Box 12	0xB070				
    Box 13	0xB548				
    Box 14	0xBA20				

     

    • Like 1
  2. Here is the info for the Japanese version of Pokemon Stadium (called Pocket Monsters Stadium 2 over there). Save structure is pretty much the same as:

     

    Stadium 1 (JPN) [Pocket Monsters Stadium 2]
    
    Registered Teams
    ----------------
    
    Team structure:
    
    0x000:		Unknown, seems to always be 0x0001 for all teams (2 bytes)
    0x002:		OT name from the save that registered the team (6 bytes). 0x50 terminator and padding (0x00) until 0x007.
    0x008:		OT ID# from the save that registered the team (2 bytes) (0x00 padding after?)
    0x00B:		Number of pokémon in the team (1-6) (1 byte)	
    0x00C:		Pokémon slot #1*
    0x039:		Pokémon slot #2*
    0x066:		Pokémon slot #3*
    0x093:		Pokémon slot #4*
    0x0C0:		Pokémon slot #5*
    0x0ED:		Pokémon slot #6*
    0x11A:		Register team 1 "POKE" footer (4 bytes)
    0x11E: 		Register team 1 checksum (2 bytes)
    
    * Pokémon structure is 45 bytes, (00 to 0x20 is the same structure as GameBoy, then comes Nickname and OT at 6 bytes each:
    
    0x00    Index number of the Species	1 byte
    0x01    Current HP			2 bytes
    0x03    Level                		1 byte
    0x04    Status condition      		1 byte
    0x05    Type 1                		1 byte
    0x06    Type 2                		1 byte
    0x07    Catch rate/Held item        	1 byte
    0x08    Index number of move 1        	1 byte
    0x09    Index number of move 2        	1 byte
    0x0A    Index number of move 3       	1 byte
    0x0B    Index number of move 4        	1 byte
    0x0C    Original Trainer ID number    	2 bytes
    0x0E    Experience points        	3 bytes
    0x11    HP EV data            		2 bytes
    0x13    Attack EV data            	2 bytes
    0x15    Defense EV data            	2 bytes
    0x17    Speed EV data            	2 bytes
    0x19    Special EV data            	2 bytes
    0x1B    IV data                		2 bytes
    0x1D    Move 1's PP values        	1 byte
    0x1E    Move 2's PP values        	1 byte
    0x1F    Move 3's PP values        	1 byte
    0x20    Move 4's PP values        	1 byte
    0x21    Nickname            		6 bytes, 0x50 terminator used to indicate end of name, 0x00 padding used if name is short.
    0x2C    OT                		6 bytes, 0x50 terminator used to indicate end of name, 0x00 padding used if name is short.
    
    
    Registered Team Pointers:
    
    	Anything Goes	Nintendo Cup '97	Nintendo Cup '98	Nintendo Cup '99	Petit Cup	Pika Cup		
    01	0x0		0xD80			0x1B00			0x2880			0x4000		0x4D80				
    02	0x120		0xEA0			0x1C20			0x29A0			0x4120		0x4EA0				
    03	0x240		0xFC0			0x1D40			0x2AC0			0x4240		0x4FC0				
    04	0x360		0x10E0			0x1E60			0x2BE0			0x4360		0x50E0				
    05	0x480		0x1200			0x1F80			0x2D00			0x4480		0x5200				
    06	0x5A0		0x1320			0x20A0			0x2E20			0x45A0		0x5320				
    07	0x6C0		0x1440			0x21C0			0x2F40			0x46C0		0x5440				
    08	0x7E0		0x1560			0x22E0			0x3060			0x47E0		0x5560				
    09	0x900		0x1680			0x2400			0x3180			0x4900		0x5680				
    10	0xA20		0x17A0			0x2520			0x32A0			0x4A20		0x57A0				
    11	0xB40		0x18C0			0x2640			0x33C0			0x4B40		0x58C0				
    12	0xC60		0x19E0			0x2760			0x34E0			0x4C60		0x59E0				
    
      	Prime Cup	Gym Leader Castle	Vs. Mewtwo
    01	0x5B00		0x6880			0x8000
    02	0x5C20		0x69A0			0x8120
    03	0x5D40		0x6AC0			0x8240
    04	0x5E60		0x6BE0			0x8360
    05	0x5F80		0x6D00			0x8480
    06	0x60A0		0x6E20			0x85A0
    07	0x61C0		0x6F40			0x86C0
    08	0x62E0		0x7060			0x87E0
    09	0x6400		0x7180			0x8900
    10	0x6520		0x72A0			0x8A20
    11	0x6640		0x73C0			0x8B40
    12	0x6760		0x74E0			0x8C60

    Just like Stadium, it seems the backups are stored in 0x1---, so if you can't find a team in the mentioned pointers, try finding them there. For example, Vs. Mewtwo teams might be in 0x18000 instead of 0x8000.

    Use this chart to figure out the OT: https://bulbapedia.bulbagarden.net/wiki/Character_encoding_in_Generation_I#Japanese

    • Like 1
  3. Hope this will help anyone who is trying to figure out info for Pokemon that are registered in their cartridges. I couldn't find any extractor/save editor for this game, so I looked through the save data itself and used @suloku's post on Pokemon Stadium Zero registered teams as a base. My game is English version 1.1, but I assume it is the same for 1.0 and 1.2. Also, registered teams for the different modes are all over the place. Will post their pointers at the end.

    Stadium 1 V1.1 (ENG)
    
    Registered Teams
    ----------------
    
    Team structure:
    
    0x000:		Unknown, seems to always be 0x0001 for all teams
    0x001:		OT name from the save that registered the team (7 bytes). 0x50 terminator and padding (0x00) until 0x00C.
    		This probably starts at 0x002 (6 bytes) for Japanese games. 
    0x00C:		OT ID# from the save that registered the team (2 bytes) (0x00 padding after?)
    0x00F:		Number of pokémon in the team (1-6) (1 byte)	
    0x010:		Pokémon slot #1*
    0x047:		Pokémon slot #2*
    0x07E:		Pokémon slot #3*
    0x0B5:		Pokémon slot #4*
    0x0EC:		Pokémon slot #5*
    0x123:		Pokémon slot #6*
    0x15A:		Register team 1 "POKE" footer (4 bytes)
    0x15E: 		Register team 1 checksum (2 bytes)
    
    * Pokémon structure is 55 bytes, (00 to 0x20 is the same structure as GameBoy, then comes Nickname and OT at 7 bytes and 
      4 terminator/padding each):
    
    0x00    Index number of the Species	1 byte
    0x01    Current HP			2 bytes
    0x03    Level                		1 byte
    0x04    Status condition      		1 byte
    0x05    Type 1                		1 byte
    0x06    Type 2                		1 byte
    0x07    Catch rate/Held item        	1 byte
    0x08    Index number of move 1        	1 byte
    0x09    Index number of move 2        	1 byte
    0x0A    Index number of move 3       	1 byte
    0x0B    Index number of move 4        	1 byte
    0x0C    Original Trainer ID number    	2 bytes
    0x0E    Experience points        	3 bytes
    0x11    HP EV data            		2 bytes
    0x13    Attack EV data            	2 bytes
    0x15    Defense EV data            	2 bytes
    0x17    Speed EV data            	2 bytes
    0x19    Special EV data            	2 bytes
    0x1B    IV data                		2 bytes
    0x1D    Move 1's PP values        	1 byte
    0x1E    Move 2's PP values        	1 byte
    0x1F    Move 3's PP values        	1 byte
    0x20    Move 4's PP values        	1 byte
    0x21    Nickname            		10 bytes + 0x50 terminator to make total of 11. If name is shorter, 0x00 padding is used.
    0x2C    OT                		7 bytes + 0x50 terminator + 3 byte padding of 0x00 for total of 11. 
    					If name is shorter, 0x00 padding is used.
    
    
    Registered Team Pointers:
    
    	Anything Goes	Poke Cup	Petit Cup	Pika Cup	Prime Cup	Gym Leader Castle	Vs. Mewtwo
    01	0x000		0x2940		0x4000		0x4DC0		0x5B80		0x6940			0x8000
    02	0x160		0x2AA0		0x4160		0x4F20		0x5CE0		0x6AA0			0x8160
    03	0x2C0		0x2C00		0x42C0		0x5080		0x5E40		0x6C00			0x82C0
    04	0x420		0x2D60		0x4420		0x51E0		0x5FA0		0x6D60			0x8420
    05	0x580		0x2EC0		0x4580		0x5340		0x6100		0x6EC0			0x8580
    06	0x6E0		0x3020		0x46E0		0x54A0		0x6260		0x7020			0x86E0
    07	0x840		0x3180		0x4840		0x5600		0x63C0		0x7180			0x8840
    08	0x9A0		0x32E0		0x49A0		0x5760		0x6520		0x72E0			0x89A0
    09	0xB00		0x3440		0x4B00		0x58C0		0x6680		0x7440			0x8B00
    10	0xC60		0x35A0		0x4C60		0x5A20		0x67E0		0x75A0			0x8C60
    
    If you are unable to find a registered team in the mentioned locations, try adding a 1 after the x, which might be where backups are located. 
    For example, all of my registered Vs. Mewtwo teams were in 0x18000 on my main file instead of 0x8000 on my test file.
    
    Also of note: 0xDC0 to 0x2930 are blank. These Registered Teams are after Free Battle, and before Poke Cup, so these are likely used 
    for the extra two cups that the Japanese version of this game has: Nintendo Cup '98 and Nintendo Cup '99 (the latter has four divisions 
    like the Poke Cup, but Poke Cup's rules match Nintendo Cup '97). Because of this change, these spaces will likely always be blank in 
    international versions of the game.

    Most of the info is already shown to you when you view a Registered Pokemon's info, so the main things you'll want are: ID Number, EVs, IVs, each move's PP values, and OT. You might also want Catch rate/held item (if you plan on bringing them to Gen 2).

    For PP, you'll need to convert it to binary (if it isn't at 0 PP Ups used), then see the value of the upper bits to see how many were used. Use this chart to figure out the OT: https://bulbapedia.bulbagarden.net/wiki/Character_encoding_in_Generation_I#English

    • Like 1
  4. 1 hour ago, Asia81 said:

    I also have the exact same problem about catch rate as reported here as of today :

     

    Didn't notice that comment. It seems that the US versions overall have no issue with catch rates, but Japanese and other international releases do have this issue.

    I tested out 200622, and it doesn't flag them as Invalid (so legality for Gen I checks was changed with the latest release or in 200718), but it still gives them a 255 catch rate which I believe is inaccurate, so the underlying problem seems to have been there for a while.

  5. Not sure when it started to occur with the latest PKHeX, but I noticed that some Pokemon in Gen I JP games started appearing as Invalid due to the catch rate. These Pokemon have never been transferred or used in Gen II or Pokemon Stadium 2. The image I uploaded shows how it looks on the latest version of PKHeX (left) compared to an older version (20190919, right).

    Guess it's due to PKHeX seeing the catch rate for these Pokemon as 255, which might not be normal? When I load a US Gen I save, the catch rate for these Pokemon appear normal (which is 173, which are Berries in Gen II) with no legality issues.

    PKHeX Gen I JP Bug 01.PNG

    • Like 1
  6. Doesn't look like it. :/ If you trust strangers on the net and the mail service, you could send me your game(s) and I could repair it/them for you. Send me a PM if you're interested. :)

    Actually, I ordered an EZ Flash iV GBA rom cart. Will that be good enough to run the RTC edit program?

  7. Hi,

    maybe BulbapediaTalk isn't the right site for lengthy discussions. I almost forgot I had an account here.

    I have two cartridges that had their battery run out, replaced and RTC patched to work again. Both had contact with VBA (1.8.0 SVN926 - farming items is much easier with a memory viewer and savestates) so both had the "last saved value" somewhere in 2014.

    Furlock included the source so it should be possible to port it to DS flash carts. It's been some time since I compiled DS-stuff (Pokreader DS; never took the time to translate the page from german) so don't hold your breath but maybe I'll try someday.

    Did you manage to get berries growing in the savefile that seems to be "forever corrupted" by VBA? Does the clock in the player's room still move? Did you try "transplanting" the savefile to another cartridge? If you send my a copy, I could try sending it to one of my cartridges and see if I can find out anything.

    Regards,

    TCC

    I wish I didn't drop out of the scene so soon. I highly doubt it, but has there been any movement in terms of transferring that GBA Flash Card program for use on a DS Flash Cart? Unfortunately don't have a GBA Flash Cart for use at the moment...

  8. Okay, will try this and report back. Thank you.

    Something related to this, out of curiosity: Could someone explain to me how the 'current time' is stored in the game? I can see in the save file editor that I can edit 'Time' but it shows Hour, Minute, Second and Frame, and the hour value is higher than 24, so I'm totally confused. If I wanted the in-game time to be, say, midnight or 14:25, what would I have to enter in the 'time' settings?

    I know this post was from seven months ago, but can anyone confirm if the RTC fix in A-Save truly fixes the clock in RSE back to its normal form (after going to different areas, saving, loading more areas, saving, etc.)? I'm really hoping that it does, want to try to get back to battling my friends in their Secret Bases.

    Nonetheless, thanks for A-Save, KazoWAR! Really awesome that you made this!

×
×
  • Create New...