Jump to content

evandixon

Administrator
  • Posts

    5910
  • Joined

  • Last visited

  • Days Won

    84

Everything posted by evandixon

  1. The terminator is an item with all zeros. So that must be what the constant 1 is. I'll implement that later tonight. [Edit 2] New update released to view items. Todo: -Display whether an item is held -Edit items (GUI is fully functional, now I have to actually write to the file). -(Not next release) add extended box support Untitled..zip
  2. Not that I know of, unless you have access to the save file.
  3. Grovyle91: When items are removed from the bag, they're not overwritten. They stay there with a terminator. Maybe tonight I can post the terminator. It might be related to that constant 1. Thanks, that will help in reading names. That might not be constant as it gets closer to the end of the alphabet, but I'll use that until I prove otherwise.
  4. Download the .pkm, open it with Pokegen, and create the code.
  5. You'll need the .pkm file for the event, as Pokegen doesn't support Mystery Gift cheats. After looking around for a bit, you can get the .pkm files here: http://www.pokedit.com/download/event-pkm/
  6. Good work on the item stuff! It's nice to have properly formatted data to develop with. As for names, the player name is also stored at 0x8411-0x841C in proprietary encoding (I have values for A, B, C, and ? so far, I'll look at more later). The partner name might be close to that.
  7. Finished researching for the day. If any non developer wants to help out, send me your save files so I can list what values are for what character in the team name. Start new games with specific 10 character sets perhaps, then immediately quicksave. Grovyle91: Thank you for your help in figuring out the over complicated item structure. I'll spend the next few days developing it and hopefully it will be ready soon. Everyone else: What other features do you want? It will give me something to look for later.
  8. The save file for Pokémon Mystery Dungeon Explorers of Sky is 128KB and has three root blocks. The first two store the actual data and are 50KB large each. If the checksum on one of the first two blocks is invalid, the other will be loaded. If both are invalid, the save will be deleted. The third block stores some quick save data, including whether or not a quick save has been resumed. Checksum The checksum is 4 bytes long and is at the beginning of any of the three root blocks. To calculate the checksum, split the data from 0x4 to 0xB65A into 4 byte words, add each word together and truncate the result to 32 bits. VB.Net Code to fix the checksum for both sections, where _rawData is an array of byte containing the save file: Public Sub FixChecksum() Dim words As New List(Of UInt32) For count As Integer = 4 To 46682 Step 4 words.Add(BitConverter.ToUInt32(_rawData, count)) Next Dim sum As UInt64 = 0 For Each item In words sum += item Next Dim buffer() As Byte = BitConverter.GetBytes(sum) For x As Byte = 0 To 3 _rawData(x) = buffer(x) _rawData(x + &HC800) = buffer(x) Next End Sub Byte Storage Due to limited storage space, the game has very efficient storage of data. Unused bits are avoided by not necessarily paying attention to byte lines. Ex. 3 variables, one 3 bits, one 4 bits, and one 11 bits might be stored like 11122223 33333333 33000000. In cases where something is compressed like this and is more than just a few bits, it must be retrieved with a modified kind of bit shifting. It will be referred to as "PMD bit shifting" or the "special bit shifting" on this wiki page. C# code to unshift the bytes: static Stream decode(Stream src, int startbit, int bits) { MemoryStream res = new MemoryStream(bits / 8); int srcbit = startbit; int resbit = 0; byte a = srcbit == 0 ? (byte)0 : (byte)(src.ReadByte() >> srcbit); byte b = 0; while (bits-- > 0) { b >>= 1; if ((a & 1) != 0) b |= 0x80; a >>= 1; if (++srcbit == 8) { a = (byte)src.ReadByte(); srcbit = 0; } if (++resbit == 8) { resbit = 0; res.WriteByte(b); } } return res; } Number of Adventures 0x8B70-0x8B73: 32-bit signed integer in little endian format. Team Name &H994E to &H9958, 9 bytes long. It is similar to ANSI, but slightly different, as shown on this chart. Pokémon Storage Pokémon storage begins at 0x464. There are 720 Pokémon slots, each 362 bits long (45 bytes + 2 bits). If the start bit for a Pokémon (relative to 0x464) is not divisible by 8, it must be bit shifted using the special PMD bit shifting, with the start bit being the remainder of the bit offset divided by 8. In other words, 1st Pokémon, don't bit shift. 2nd, PMD bit shift with the start bit 2. 3rd, PMD bit shift with the start bit 4. 4th, PMD bit shift with the start bit 6. 5th, don't bit shift. And so on. Pokémon Structure *.skypkm File A skypkm file contains all the Pokémon data, padded by 6 bits at the beginning of the file (because the file size is 45 bytes and 2 bits; 6 more bits are needed). The reason the 6 bits aren't at the end is so that reading the nickname is easier. Character Encoding This game stores strings in a format similar to ANSI. The following is a list of HEX values paired with the corresponding character. Brackets indicate that the game does not support that character. 00=[END] 01=[$01] 02=[$02] 03=[$03] 04=[$04] 05=[$05] 06=[$06] 07=[$07] 08=[$08] 09=[$09] 0A=[$0A] 0B=[$0B] 0C=[$0C] 0D=[$0D] 0E=[$0E] 0F=[$0F] 10=[$10] 11=[$11] 12=[$12] 13=[$13] 14=[$14] 15=[$15] 16=[$16] 17=[$17] 18=[$18] 19=[$19] 1A=[$1A] 1B=[$1B] 1C=[$1C] 1D=[$1D] 1E=[$1E] 1F=[$1F] 20= 21=! 22=" 23=# 24=$ 25=% 26=& 27=' 28=( 29=) 2A=* 2B=+ 2C=, 2D=- 2E=. 2F=/ 30=0 31=1 32=2 33=3 34=4 35=5 36=6 37=7 38=8 39=9 3A=: 3B=; 3C=< 3D== 3E=> 3F=? 40=@ 41=A 42=B 43=C 44=D 45=E 46=F 47=G 48=H 49=I 4A=J 4B=K 4C=L 4D=M 4E=N 4F=O 50=P 51=Q 52=R 53=S 54=T 55=U 56=V 57=W 58=X 59=Y 5A=Z 5B=[$5B] 5C=\ 5D=] 5E=^ 5F=_ 60=` 61=a 62=b 63=c 64=d 65=e 66=f 67=g 68=h 69=i 6A=j 6B=k 6C=l 6D=m 6E=n 6F=o 70=p 71=q 72=r 73=s 74=t 75=u 76=v 77=w 78=x 79=y 7A=z 7B={ 7C=| 7D=} 7E=[$7E] 7F=[$7F] 80=€ 81=[$81] 82=[$82] 83=[$83] 84=[$84] 85=… 86=† 87=[$87] 88=ˆ 89=‰ 8A=Š 8B=‹ 8C=Œ 8D=[e] 8E=Ž 8F=[è] 90=• 91=‘ 92=’ 93=“ 94=” 95=• 96=[er] 97=[re] 98=~ 99=™ 9A=š 9B=› 9C=œ 9D=• 9E=ž 9F=Ÿ A0= A1=¡ A2=¢ A3=£ A4=¤ A5=¥ A6=¦ A7=§ A8=¨ A9=© AA=ª AB=« AC=¬ AD=­ AE=® AF=¯ B0=° B1=± B2=² B3=³ B4=´ B5=µ B6=¶ B7=„ B8=‚ B9=¹ BA=º BB=» BC=← BD=♂ BE=♀ BF=¿ C0=À C1=Á C2= C3=à C4=Ä C5=Å C6=Æ C7=Ç C8=È C9=É CA=Ê CB=Ë CC=Ì CD=Í CE=Î CF=Ï D0=Ð D1=Ñ D2=Ò D3=Ó D4=Ô D5=Õ D6=Ö D7=× D8=Ø D9=Ù DA=Ú DB=Û DC=Ü DD=Ý DE=Þ DF=ß E0=à E1=á E2=â E3=ã E4=ä E5=å E6=æ E7=ç E8=è E9=é EA=ê EB=ë EC=ì ED=í EE=î EF=ï F0=ð F1=ñ F2=ò F3=ó F4=ô F5=õ F6=ö F7=÷ F8=ø F9=ù FA=ú FB=û FC=ü FD=ý FE=þ FF=ÿ
  9. Thank you for finding that! Users everywhere will soon be able to edit items! I'll start implementing that in the next few days (giving proper credit of course). Sending me a list of item ID's would be great. If you didn't, users would just have to manually add the item ID into a text file. I made progress in editing the Player Name. It's stored at 0x487-0x490 in addition to 0x13F-0x148. 0x487 uses proprietary character encoding, terminated with 01 then 00's, while 0x13F is ANSI. I'll release that as soon as I have more character codes found (I only have A, B, C, and ? so far. Unknown characters are for now replaced with ?.
  10. Most users don't post on a definite schedule. Give Kaphotics more time before panicking.
  11. You should be able to set that in Pokegen. I think it's select by default. Are you using BW 1 or 2?
  12. 1. Download the wondercards you missed from https://projectpokemon.org/forums/files/category/2-event-gallery/ 2. Add it to your save file with PKHeX (edited by theSLAYER)
  13. Updated to support the .Net Framework 4.0 because it was requested. (Or should I have said downgraded?) Anyway, I also added more info about the structure of items, which is remarkably inconsistent. I'll take a break from that for a little bit, perhaps I'll come up with something later.
  14. I haven't found anything about that error... Have you tried http://www.pokecheck.org ?
  15. Which program? There's more than one GTS hack.
  16. That akward moment when you didn't test it like you thought you did... That should have fixed it. Redownload it and try again.
  17. I don't see any checksums (or any data) there in Sapphire or Emerald. If it works like it does in 4th and 5th gen games, there's a block of data with a checksum at the end. Try looking there, or where ever a seemingly random 4 byte sequence follows or precedes data. Change things in game and look for that kind of change. If it's like in Black and White, the checksum may be a CRC16-CCITT. Other users may be able to help you more, but if not, post where you think the checksums are and I'll see chat I can do. For all I know, it could be like Mystery Dungeon Explorers of Sky (where data is split into 4 byte "words", added together, and part of the result is the checksum). [Edit] Oh, also look at Pokebox GBA (listed in this thread), because it should be able to fix the checksums for you, helping determine where they are.
  18. evandixon

    PID is not valid

    Can you post a link to your *.pkm? I put those values into Pokegen and got the same PID. Perhaps it's something else that conflicts.
  19. It's in French. Filetrip mirror: http://filetrip.net/gba-downloads/tools-utilities/download-pokemon-rubis-saphir-savestate-editor-090-f31973.html
  20. I think I read somewhere that some of the current NES VC games were updated to support download play, so trading is a possibility.
  21. If that doesn't work, tell us what emulator you're using.
  22. Your only choices: get access to the save file, or use Action Replay. By the way, this thread would belong more in the Save Editing Help section than Pokemon Legality.
  23. I heard you leik mudkipz?!? Sorry. I couldn't resist. Personally, I would have to go with Treeko, Mudkip, or Piplup.
  24. But both devices only let you cheat on DS games, not 3DS games. They just run on the system in DS mode.
×
×
  • Create New...