Stuff to keep in mind. ## # Random note ## I have found three offset points require an ending with 0x50: 0x259E, 0x25FD, 2C5E 0x259E is the trainer, 0x25FD is the rival, but I am uncertain what 2C5E is at this time. What is the items one can have in their pocket? ## # Specific offset points ## # TRAINER NAME: OFFSET: 0x2598 - 0x259E NOTE: It must end with 0x50 # RIVAL NAME: OFFSET: 0x25F6 - 0x25FD NOTE: It must end with 0x50 # MONEY: OFFSET: 0x25F3 - 0x25F5 NOTE: Reads hex weird. Only accepts 0-9. Basically, do not convert with money. # ITEM BAG OFFSET: 0x25C9 NOTE: This is the amount of items held. OFFSET: 0x25CA NOTE: This is the identifier for ITEM #0 OFFSET: 0x25CB NOTE: This is the quantity for ITEM #0 --------- # Trying to find the party stats. --------- 00002F2C: THE AMOUNT OF PARTY MEMBERS. * note: The next slot MAY need to be 0xFF? 00002F2D: PARTY #1 SPECIES ID 00002F2E: PARTY #2 SPECIES ID 00002F2F: PARTY #3 SPECIES ID 00002F30: PARTY #4 SPECIES ID 00002F31: PARTY #5 SPECIES ID 00002F32: PARTY #6 SPECIES ID ** START NTOES ** note: (0x2F2C + 0x2A + SLOT_NUM(0x01) note: (0x2F2C + (0x2B * 0x02) - 0x01 + 2C(SLOT_NUM - 0x01) It may be 0x2F2C + 0x2B (SLOT_NUM) - I can arrive at the Party #1 attrib with: >0x2f2c + (0x29 * 1) = 0x2f57 (PARTY #1 HP) This is fine. No additions required. But we want 0x2f81 for party #2. This means >0x2f2c + (0x29 * 2) = 0x2f7e So we need to add 3 to this. We want 0x2fad for party #3. >0x2f2c + (0x29 * 3) = 0x2fa7 So we need to add 6 to this. Perhaps I need to consider this algorithm instead: 0x2f2c + (0x29 * n) + (3 * (n - 1)) This makes for: 0x2FC7 (ALSO, please check to see if 0x2f31 changes to 255) (if it does, the next memory point has to be 0xff) (in the list.) <-- (UPDATE: It does) -- trying this: Subtracting the addr of P3.SPE - P2.SPE: 0x2FB7 - 0x2F8B = 2C [44] 0x2F8B - 0x2C = 0x2F5F (P1.SPE) By this logic, adding 0x2C to P3.SPE should send me to P4.SPE, right? 00002FE3: 08 (the 4th party has 8sp.) So, we should just have a starting point, jump to the point 0x2f29. Then we can just add 44i, where i is the position. Then we add 2j where j is the attribute type. LVL=0, HP=1, and so on. ** END NOTES ** 00002F55: PARTY #1 LVL 00002F57: PARTY #1 HP 00002F59: PARTY #1 ATK 00002F5B: PARTY #1 DEF 00002F5D: PARTY #1 SPD 00002F5F: PARTY #1 SPE 00002F81: PARTY #2 LVL 00002F83: PARTY #2 HP 00002F85: PARTY #2 ATK 00002F87: PARTY #2 DEF 00002F89: PARTY #2 SPD 00002F8B: PARTY #2 SPE 00002FAD: PARTY #3 LVL 00002FAF: PARTY #3 HP 00002FB1: PARTY #3 ATK 00002FB3: PARTY #3 DEF 00002FB5: PARTY #3 SPD 00002FB7: PARTY #3 SPE ** Notes on move list ** 00002F3C: PARTY #1 MOVE 1 00002F3D: PARTY #1 MOVE 2 00002F3E: PARTY #1 MOVE 3 00002F3F: PARTY #1 MOVE 4 00002F68: PARTY #2 MOVE 1 00002F69: PARTY #2 MOVE 2 00002F6A: PARTY #2 MOVE 3 00002F6B: PARTY #2 MOVE 4 So, it looks like this is another (2C * position) situation [+44] If this is true then PARTY #3 MOVE 1 will be: 0x2f94 IT WAS. THANK GOD. So the starting point is: 0x2F0F + (2C * position) + MOVE_NUMBER (ALT: 0x2f10 + (2c * position) + (MOVE_NUMBER-1)) but that seems pointlessly long. 00002F94: PARTY #3 MOVE 1 00002F95: PARTY #3 MOVE 2 00002F96: PARTY #3 MOVE 3 00002F97: PARTY #3 MOVE 4 I need to catch a pokemon to see what number 2 is, probably. ** END notes on move list ** --------- # Added in another text file I was using for notes: # EDIT POKEMON [DEBUG] memory address edited: 12077 [DEBUG] party_member_offset: 0 [DEBUG] stat_val_offset: 1 [DEBUG] state_value: 116 # EDIT POKEMON ATK [DEBUG] memory address edited: 12077 [DEBUG] party_member_offset: -44 [DEBUG] stat_val_offset: 45 [DEBUG] state_value: 100 # EDIT POKEMON DEF [DEBUG] memory address edited: 12079 [DEBUG] party_member_offset: -44 [DEBUG] stat_val_offset: 47 [DEBUG] state_value: 76 -- After removal of +44 -- # EDIT POKEMON ATK (76) [DEBUG] memory address edited: 12033 [DEBUG] party_member_offset: -88 [DEBUG] stat_val_offset: 45 [DEBUG] state_value: 76 # EDIT POKEMON DEFENSE (76) [DEBUG] memory address edited: 12035 [DEBUG] party_member_offset: -88 [DEBUG] stat_val_offset: 47 [DEBUG] state_value: 76 # EDIT POKEMON -> DODUO [DEBUG] memory address edited: 12077 [DEBUG] party_member_offset: 0 [DEBUG] stat_val_offset: 1 [DEBUG] state_value: 70 # EDIT POKEMON DEFENSE (74) [DEBUG] memory address edited: 12035 [DEBUG] party_member_offset: -88 [DEBUG] stat_val_offset: 47 [DEBUG] state_value: 74 --- LV: 7 HP: ?? ATK: 13 DEF: 11 SPD: 15 SPE: 13 MOV1: SCRATCH [0A] MOV2: GROWL [2D] MOV3: -- MOV4: -- -- Lv 4 hp: 17 atk: 8 spe: 8 move1: Gust [0x10] -- RATTATA [A5] LV 3 15 HP 8 ATK 7 DEF 9 SPD 6 SPC MOVE1: TACKLE MOVE2: TAIL :47 WHIP --- Pidgy LV 4 17 HP 8 ATK 8 DEF 10 SPD 8 SPC --- 0x2f29 + (44 * i) + (2 * j) i = slot number, j = stat-type ------------ modStats(2 [EDITING: Charmander] LVL: 23 HP: 13 ATK: 11 DEF: 15 SPD: 13 SPE: 0 ----- PARTY #2: PECK [40] GROWL [2D] PARTY #3: LEER [2B] TACKLE [21] ALGO: 0x2F0F + (2C * position) + MOVE_NUMBER printMoves printStats 0x2f0f + (0x2C * party_member);