-
Posts
133 -
Joined
-
Last visited
Content Type
Profiles
Pokédex
Portal
Technical Documentation
Pages
Tutorials
Forums
Events
Downloads
Gallery
Blogs
Posts posted by RubenPikachu
-
-
Maybe the correct formula is (id^sid^s1^s2) % 2 == 0 && (id^sid^s1^s2) < 16? I doubt that they are giving us 16/65536 odds this gen instead of usual 8/65536.
My only shiny Luvdisc has 6. I will be chaining more after my shift is over.
I got a pkx of a shiny Alakazam that has 11 as the result, so the (id^sid^s1^s2) % 2 == 0 cannot be part of the formula
-
Are you sure it has 4 at offset 0x15? do you have the pkx file to check it out since all my HA pokemon have the value of 4 and all other have between 1 and 2
About shiny threshold, it would be needed a shiny pokemon with 15 as the result of XORing the data, and one with 16 to demostrate it...
-
I got a shiny pkx with the formula equal to 12 it is possible that the formula is (id^sid^s1^s2)< 16 but I'm not sure of it...
Also found out how ability number (offset 0x15) works, seems it works through bits, bit 0 indicates the pkx has the ability 0 of its species, bit 1 is ability 1 and bit 2 is for Hidden Ability (values are 1 (0), 2 (1) and 4 (HA))
-
Found out how a pkx is shiny, it uses offset 0x18-0x1B (I'm not sure how the game generates it but acts as a unsigned integer for shiny check), ID and SID
Like the PID in Gen 5, divide this seed into 16 bit parts, let s1 be the upper part and s2 the lower part
If (id^sid^s1^s2)<16 then the pokemon is shiny
-
I would like to contribute my pkx files, I have only extracted these pkx files... however some of them have hidden ability and two of them are shiny so it could help with research :smile:
-
Obtained Mega stones IDs, they are between Mulchs and the new berries
656 Gengarite
657 Gardevoirite
658 Ampharosite
659 Venusaurite
660 Charizardite X
661 Blastoisinite
662 Mewtwonite X
663 Mewtwonite Y
664 Blazikenite
665 Medichamite
666 Houndoominite
667 Aggronite
668 Banettite
669 Tyranitarite
670 Scizorite
671 Pinsirite
672 Aerodactylite
673 Lucarionite
674 Abomasite
675 Kangaskhanite
676 Gyaradosite
677 Absolite
678 Charizardite Y
679 Alakazite
680 Heracronite
681 Mawilite
682 Manectite
683 Garchompite
684 ????
685 ????
686 Roseli Berry
-
Hi,
I have a question regarding pwt download editor.. Can I put 255 EV's in all of their stats(HP, ATK, DEF etc) of the trainer's pokemon or just only a total of 510 EV's?? Are they more stronger if all of their EV's are 255?
Settings- Hack editor
You can put 255 in all stats EV's, however I'm not sure if the game will limit them to 510 EV's...
Also Hack editor is only for the pkm editor
-
You can set AI value where offset 0x3DC of trainer data in pwt files.
(0x650, 0xA30, 0xE10 and 0x11F0 bytes from the beginning of the files.)
This value is set to 0, AI will choose a move randomly.
AI value +1: not choose moves have no effect at the time +2: remember moves that the opponent's pokémon used +4: if AI's pokémon has a move that can beat the opponent in this turn, choose it +8: if AI's pokémon has a status move, choose it on the first turn
Setting to 15 is probably the strongest, but this value cannot be set in PikaEdit...
Thanks a lot, I didn't have the offsets for difficulty, I have checked more PWT files to check out this and these are the offsets for AI
I have updated Pikaedit's DTE and the standalone version of DTE with AI difficulty editor on the trainer tab
-
Seems interesting...
Finished:Gen 5 PKM support(pc/party)
Gen 5 mystery gifts
B2W2 daycare storage
B2W2 battle box storage
B2W2 party storage
I'm wondering about mystery gifts, are you planning a wonder card editor and/or injector?
-
Nice... seems that you have everything needed for pkm editing and wonder cards, and some save file editing (trainer name, ID, SID, adventure started, badges, boxes,...) and some interesting stuff, keep up the good work!
-
In Download Tournament editor, I keep on getting the name SARAH for important trainers.
How do you get that name and what do you mean by important trainers (trainers of the tournament or special trainers)? If it is displayed on the trainers tab, that's one of the trainer's name of the tournament... On special trainers on the Bracket tab that name doesn't exist at all...
-
---Posts Merged---
I solved it, it was enough to always put "PWT file" instead of ROM2, but instead of Misty I get Sabrina, strange is not it?
Edit:I solved this, just reverse the files of the characters, for example if you want to "Blaine" you will have to select "Sabrina."
Then there is a bug on DTE... it is missing a special trainer before the gym leaders... I will be checking the source code to find the bug and fix it...
-
Ok, I'm back... First of all, have you finished inserting all 4 trainers? DTE has some problems saving if you have only 3 trainers, if that's not the case then change the slots to match this... use slots 1-4 for trainers to battle and slots 5-7 select filler trainers
Also I downloaded your pwt file and it load some weird stuff like the pkm data is incomplete and there are only two trainers :confused:
The tournaments you linked seem to have invalid checksums, so they are detected by PWT Editor and the game as corrupt. This could be due to using a hex editor to make changes, or bugs in the tool(s) you used. Since you used RubenPikachu's program, I can't help you with that; even though DTE was built on top of PWT Editor, it implements its own extra features, and I haven't had any tournaments corrupt on me with PWT Editor.If you really want to import these, use a hex editor to truncate them to 0x1210 bytes and import them as Raw Data in PWT Editor.
Well... DTE doesn't fix the checksum when saving a pwt file... the checksum is calculated when injecting a pwt file on the save file...
-
It would be nice to share and try other's custom download tournaments, I will make some and upload them :biggrin:
Also I fixed the banned move bug, so it will show Sky Drop or any other move selected...
-
I have found out that Studio Pokemon (check here for more info http://projectpokemon.org/forums/showthread.php?26325-Studio-Pokemon-Injector.) can be inserted on a pwt file and battle against them.
I will add them later to DTE
Edit: Added!
[video=youtube;BURUuVideCQ]http://www.youtube.com/watch?v=BURUuVideCQ
-
The sprites were given by Kaphotics in this post http://projectpokemon.org/forums/showthread.php?25121-PWT-Download-Tournaments&p=156607&viewfull=1#post156607
I have updated DTE to contain the list :biggrin:
-
I found out the 2 offsets I needed, seems that those are the default form is that is shown in the Pokedex
With this I tried to hex edit the pokedex and it worked... Thanks! :biggrin:
-
Well I'm trying to edit a save file Pokedex through Hex editing, I have tested through various save files and got the following offsets, the first 6 have a length of 0x52 bytes with 2 extra bytes that are zeros.
0x21408 Caught 0x2145C Seen male 0x214B0 Seen female 0x21504 Seen Shiny male 0x21558 Seen Shiny Female 0x215AC ???????? 0x21601 ??????? 0x216FC Seen Forms 0x21728 Languages
Every Pokemon is given by a bit, however I'm having a problem while editing it when I open the Pokedex and scroll it to a Pokemon I have added seems that the game crashes or the pokemon sprite is grayed out, I think that the offset 0x215AC ???????? is the cause, but I don't know what it is, I know that it is similar to caught and seen offsets however it has different values
Any help?
-
Seems that I forgot the IV calculation function to be updated if you change IV :tongue:
Solved it and edited my post with the updated version :biggrin:
-
Ok... I liked DT Manager, however since the tool manages save file tournaments and edits .pwt files, I have decided to name it Download Tournament Editor (DTE)
Here it is, it requires .NET Framework 4.0 http://www.microsoft.com/en-us/download/details.aspx?id=17851
-
I have the separate version ready... However since I don't have a name for the tool other than PWT Editor, I will not upload it until I have one...
Any suggestions? :confused:
-
Thanks Kaphotics and Prof. 9 for their PWT compiled research, I have mixed it with some of my research and built a working PWT editor with trainer and pokemon editing and I have add it to my program, however since I cannot post it here, I'm going to make a separate version and post it here later...
TRAINER DATA:
0x138 = Name (16 characters)
0x158 = Class (22 characters)
0x184 = Custom intro message (74 characters)
0x218 = Custom loss message (74 characters)
0x2AC = Custom win message (74 characters)
0x340 = Unknown message (74 characters)
0x3D4 = Sprite
0x3D5 = Pre-set intro message
0x3D6 = Pre-set loss message
0x3D7 = Pre-set win message
0x3D8 = In-battle loss message
0x3D9 = In-battle win message
0x3DA = Pre-battle Announcer message
0x3DB = ?
0x3DC = ? (16-bit) (max: 0xF?)
0x3DE = ?
0x3DF = ?
[/code]
0x340 = Custom announcer message (74 characters)
Custom messages are used if pre-set messages values are zero
I edited the unknown bytes however I don't see any change...
Structure of PWT-DLC PKMs:
0x0-0x1: Species
0x2-0x17: 11 character namefield (after names, they are usually 0xFFFF aka terminators, not characters)
0x18-0x19: Held Item
0x1A: Shiny Flag (00 or 01) ~ unconfirmed, hasn't been used except for the ROM tournament
0x1B: Ability
0x1C: HP EV
0x1D: ATK EV
0x1E: DEF EV
0x1F: SPE EV
0x20: SPA EV
0x21: SPD EV
0x22-0x23: Move 1
0x24-0x25: Move 2
0x26-0x27: Move 3
0x28-0x29: Move 4
0x2A: gender? ~ unconfirmed. may just be bitflags for stuff
0x2B: Nature
0x2C-0x2F: IVs (stored same way as pkms)
0x30: ??? always 0. might be secondary sparkle like N's
0x31: Ball
0x32: Current Level
0x33: Happiness
0x30 = Alternate forms (bit 0-4)
-
Ok, this is gonna be difficult for me because Java doesn't support unsigned numbers, so I hope this helps
First this piece of your code is the rand() function that will give you the next seed, however seems you are using the same seed for all bytes
//Decrypt data
for (int j=8; j<136; j++){
x[j] = x[j] ^ Math.round((0x41C64E6D * 0x27dd + 0x6073));
System.out.println(x[j]);
}
Instead use a method and a static variable
static long seed; public static long rand(){ seed = (0x41C64E6D * seed + 0x6073) & 0xFFFFFFFF; //This is to make sure it is an unsigned integer return seed>>>16; }
Before you assign decrypt the bytes, you must now which order are the blocks shuffled, and the XOR is applied on an Unsigned Short, not a byte
//block a-b-c-d (0-24)
Long pid = 3621399865L;
int a = Math.round(((pid & 0x3E000) >> 0xD) % 24);
System.out.println(a);
//Decrypt data
for (int j=8; j<136; j++){
x[j] = x[j] ^ Math.round((0x41C64E6D * 0x27dd + 0x6073));
System.out.println(x[j]);
}
First determine the block order using the pid
int a = Math.round(((pid & 0x3E000) >> 0xD) % 24); String order = ""; switch (a){ //Determine block order case 0: order = "ABCD"; break; case 1: order = "ABDC"; break; case 2: order = "ACBD"; break; case 3: order = "ACDB"; break; case 4: order = "ADBC"; break; case 5: order = "ADCB"; break; case 6: order = "BACD"; break; case 7: order = "BADC"; break; case 8: order = "BCAD"; break; case 9: order = "BCDA"; break; case 10: order = "BDAC"; break; case 11: order = "BDCA"; break; case 12: order = "CABD"; break; case 13: order = "CADB"; break; case 14: order = "CBAD"; break; case 15: order = "CBDA"; break; case 16: order = "CDAB"; break; case 17: order = "CDBA"; break; case 18: order = "DABC"; break; case 19: order = "DACB"; break; case 20: order = "DBAC"; break; case 21: order = "DBCA"; break; case 22: order = "DCAB"; break; case 23: order = "DCBA"; break; }
Then initialize the seed with the checksum, pkm+(pkm[b+1]<<8) will give you the short for the XOR
int checksum = 0x27dd; //Beginning seed is the checksum seed = checksum; byte[] x = new byte[136]; int b = 8; long temp=0; for (b=8;b<136;){ switch (order.substring(0, 1)){ //Depending on the order unshuffle bytes case "A": for (int j=8; j<0x28; j+=2){ temp = (long) (((pkm[b]+(pkm[b+1]<<8)))^(rand())); x[j+1] = (byte) ((byte)((temp & 0xFF00)>>>8)); x[j] = (byte) ((byte) temp & 0xFF); b+=2; } order = order.replace("A",""); break; case "B": for (int j=0x28; j<0x48; j+=2){ temp = (long) (((pkm[b]+(pkm[b+1]<<8)))^(rand())); x[j+1] = (byte) ((byte)((temp & 0xFF00)>>>8)); x[j] = (byte) ((byte) temp & 0xFF); b+=2; } order = order.replace("B",""); break; case "C": for (int j=0x48; j<0x68; j+=2){ temp = (long) (((pkm[b]+(pkm[b+1]<<8)))^(rand())); x[j+1] = (byte) ((byte)((temp & 0xFF00)>>>8)); x[j] = (byte) ((byte) temp & 0xFF); b+=2; } order = order.replace("C",""); break; case "D": for (int j=0x68; j<0x88; j+=2){ temp = (long) (((pkm[b]+(pkm[b+1]<<8)))^(rand())); x[j+1] = (byte) ((byte)((temp & 0xFF00)>>>8)); x[j] = (byte) ((byte) temp & 0xFF); b+=2; } order = order.replace("D",""); break; } }
Then just write x[] from 0 to 136, the bytes will be in the correct order
-
Thanks dude! Could not have done it without you!
Thanks, also you did a lot to make this program so I'm looking foward to new versions
Look Forward To!
Changing of Box Background
Well I could help you with this, I have already added changing the box background in Pokemon Data Checker so I could give you the offsets...
Edit: It could be useful to add compatibility to BW save files to use the Hall of Fame editor only, I got the First game clear offsets, I'm researching the Hall of Fame offsets
Pokémon X and Y: PKX Contribution
in Event Contributions
Posted
All pokemon were obtained ingame, the Pikachu was obtained with PokeRadar chain, Magikarp with Consecutive Fishing, all pokemon are unmodified...
It will be difficult to obtain pkx files with current patch encryption... good luck finding some on the internet