Poryhack Posted January 22, 2010 Posted January 22, 2010 Actually I found a program which allows me to create fonts, it took me a half day to get that application working I've completed the alphanumeric symbols (foreground), but the Japanese will take some time. Not to forget the Korean... After that I need to add the background of each char in a seperate font. I saw that just shifting the text 1 px right en 1px px down won't create the same texts as ingame. By the way, has somebody noticed that the En/Fr/Ge/It/Jp/Sp save files won't work on the Korean games? I tried to get the texts from the Wonder Card, but since it didn't work I don't have any strings to add. I'm not trying to play the game all the way in Korean because I don't exactly know when the Mystery Gift is activated. What did you mean about Sabresite? Has he only done some research to it or has he created the font itself? If the latter, it would spare me much time Either way, I'll ask him what he knows. Oh, a bit off topic, but why does doubleclicking the icon of this thread closes it? I just figured that out a couple of minutes ago I've already opened it again just by doubleclicking it again, but if someone won't notice this doubleclicking it will leave his thread closed. Well, for me it probably only works on my own thread, but it's still weird Grtzz!! Yeah there is a font, haha. Sorry you had to waste your time doing it manually. kazumi213 did some kind of black magic and got a complete typeface in TTF format. You can find it here. It doesn't include the dropshadow. I also noticed that just shifting the font doesn't result in a perfect reconstruction but IMO it's close enough to not warrant a whole new font. And yeah, Korean save files are not compatible like the other languages. Don't take my word for it here, but I swear that the wonder card offsets were the same. (Despite some other things obviously being different.)
Grovyle91 Posted January 22, 2010 Author Posted January 22, 2010 Yeah there is a font, haha. Sorry you had to waste your time doing it manually. kazumi213 did some kind of black magic and got a complete typeface in TTF format. You can find it here. It doesn't include the dropshadow. I also noticed that just shifting the font doesn't result in a perfect reconstruction but IMO it's close enough to not warrant a whole new font. And yeah, Korean save files are not compatible like the other languages. Don't take my word for it here, but I swear that the wonder card offsets were the same. (Despite some other things obviously being different.) Wow It certainly helps a lot! Thanks! Just why haven't I found it earlier... Although now I know how to create fonts True, I don't think about editing that font with 2872 glyphs, too much time-consuming... Exactly my thoughts. Though it still is a bit disappointing that it isn't compatible... which is a mystery to me...
Shapatti Posted January 25, 2010 Posted January 25, 2010 Hello, i have tried your file with my save file for pokemon platinum, and when i tried to open the save file it told me that the file was too big. Is there anyway to get around this?
Grovyle91 Posted January 26, 2010 Author Posted January 26, 2010 Is there a way to turn them into AR Codes? Well, I suppose so, but first I need to do some research in these AR Codes. I'll take a look if I can support it Hello, i have tried your file with my save file for pokemon platinum, and when i tried to open the save file it told me that the file was too big. Is there anyway to get around this? That depends... first, check the save file size. Without that, I can't help you. The save file needs to be exact 256 or 512 KB. If it's not, it simply won't open.
kazumi213 Posted January 28, 2010 Posted January 28, 2010 It doesn't include the dropshadow. I also noticed that just shifting the font doesn't result in a perfect reconstruction but IMO it's close enough to not warrant a whole new font. Sadly, you can't create TTF or other Windows directly usable (no plugins or software limitations) fonts other than B/W. Trust me, I tried. Just read the notes about colored fonts on that DarkAngelX site that you link on the fonts thread. He had to use PHF format for them. Other than my font just being B/W, it is 1:1 to the pixel and complete. Size and spacing is quite accurate when used at 12 pt. JPN HG/SS don't add any extra glyph to kanas nor latins that I've noticed, and KOR Pt contains same hangul as KOR D/P (the latter used for my TTF). I have ready a 1:1 wonder card viewer, I mean WC is *exactly* displayed as in-game, no matter of WC data (latin, kana or hangul). As I said it is just a viewer, it won't support editing, but I plan to add *extraction* support from saves. The idea is a tool for quickly inspecting WC, visually, using as close as possible game rules display, since I've found that WCs with evident char corruption keep being uploaded and remain unnoticed. The only info I think I still need is a *detailed* explanation of how the game determines which game(s) the WC applies to, i.e how the 2 bytes starting at 0x14C in a PCD work. The remaining problem is that I have all this coded in MATLAB, but I think it will be possible to compile into stand alone app with some kind of support library (like .NET is required for the app on this thead). Exactly my thoughts. Though it still is a bit disappointing that it isn't compatible... which is a mystery to me... Are you including the required char code mapping (Pokemon<->Unicode)?
jawsisra Posted January 28, 2010 Posted January 28, 2010 Well, I suppose so, but first I need to do some research in these AR Codes. I'll take a look if I can support it I hope you can it will help out a lot for the people that has to use an AR to get the Mystery Gifts
Grovyle91 Posted January 28, 2010 Author Posted January 28, 2010 Sadly, you can't create TTF or other Windows directly usable (no plugins or software limitations) fonts other than B/W. Trust me, I tried. Just read the notes about colored fonts on that DarkAngelX site that you link on the fonts thread. He had to use PHF format for them.Other than my font just being B/W, it is 1:1 to the pixel and complete. Size and spacing is quite accurate when used at 12 pt. JPN HG/SS don't add any extra glyph to kanas nor latins that I've noticed, and KOR Pt contains same hangul as KOR D/P (the latter used for my TTF). I've wondered that too, but Microsoft needs to extend their font support. I mean, come on... we have Windows 7... we live in 2010... and TTF dates back to the '80 or '90 with Windows 3.1. It's possible to create your own chars with coding only, just create some variable which holds the locations of the pixels and draw the values on a bitmap, but this is WAY to much for me And I've edited the wide slash in the font, I noticed that it wasn't correct when I tried to view the Japanese preview of a Wonder Card. But for the rest, it is accurate more accurate then the font v1.3 uses now. And I'm very happy that this font exists! All the textboxes have this font now as well, otherwise the special characters in Pokémon font won't show (such as PK and MN, which are relatively ₧ and ₦). I have ready a 1:1 wonder card viewer, I mean WC is *exactly* displayed as in-game, no matter of WC data (latin, kana or hangul). As I said it is just a viewer, it won't support editing, but I plan to add *extraction* support from saves. The idea is a tool for quickly inspecting WC, visually, using as close as possible game rules display, since I've found that WCs with evident char corruption keep being uploaded and remain unnoticed.The only info I think I still need is a *detailed* explanation of how the game determines which game(s) the WC applies to, i.e how the 2 bytes starting at 0x14C in a PCD work. The remaining problem is that I have all this coded in MATLAB, but I think it will be possible to compile into stand alone app with some kind of support library (like .NET is required for the app on this thead). That's awesome My main goal was to preview any Wonder Card for outlining and such (and mostly fun to write the code). I have to admit that I planned to show it as ingame, but I know that would take to much time if it's possible at all. About that game determining, I can help you with that. Location: 0x14C Flags: SS = 0x0001 D = 0x0004 P = 0x0008 Pt = 0x0010 HG = 0x8000 in bits: 1 0 0 0 | 0 0 0 0 | 0 0 0 1 | 1 1 0 1 HG Pt P D SS The game uses flags so it can handle more than just one value. Please keep in mind that I'm using this without bitshifting (little endian and such) It was just coincidence that I've guessed the HG and SS flag right (tested afterwards with two NDS with a distribution rom and a normal rom). Are you including the required char code mapping (Pokemon<->Unicode)? You mean the Pokémon hex characters <-> Unicode hex characters? The editor uses a file as chartable, so it's editable if something is wrong. I'm not directly using the Unicode hex. The Pokémon hex is listed with the corresponding character right next to it. Like 0138=N. I hope you can it will help out a lot for the people that has to use an AR to get the Mystery Gifts I had to do some research for it, because I didn't know anything about creating AR Codes until now! I've added support for it in the next version. And it will be fantastic! I've added every game I know of and support for adding your own game IDs as well I'm testing the AR Codes right now, but when I use the code it just simply freezes my game. I'll fix this before I release the version with AR Export enabled. I'm not certain if I'll release the new version as v1.4 or v1.3a . I guess v1.4 will do because of the new AR feature, but it won't contain many more added features though. Grtzz!!
kazumi213 Posted January 28, 2010 Posted January 28, 2010 (edited) Thanks a lot for the info. Yeah, i was expecting a bit field Regarding the font, just wanted to note that games contain kana and hangul glyphs in several versions: small (used while playing, dialogs with NPCs, etc) and big (used i.e. in WCs). There's a third (fat) kana version that I think it's used for the Pokédex (main scrollable index). I finally chose to use small version of kana and hangul in the TTF. Big kana version without shadow simply looks horrible, and using big hangul would look unbalanced vs latin and kana small versions. JPN latins are included and still easily distinguishable from western ones in small version, so just a cosmetic decision to ensure balance given TTF limitations. **EDIT** I've been checking your program and the WC preview is quite nice so far. Releasing my program would not make sense with all the additional features in yours. However I might help you in fine tuning/adding kana and hangul display on the preview. Just PM me with details on how do you need the required glyphs (bitmaps) to be formatted (arranged/colored) and I will supply them. I'm assuming that you are overwritting a base empty WC with the glyphs (my approach), but I'm not really sure. Edited January 28, 2010 by kazumi213
codemonkey85 Posted January 29, 2010 Posted January 29, 2010 Grovyle, you continue to astound me with your speed and capacity to learn and apply what you know. ARDS output will make this program a must-have for Pokémon hackers. Quick suggestions for you: Let the user select which buttons will activate the code. Sometimes people have other codes running as well that use certain buttons, or sometimes their DS is broken and L and R don't work or whatever. It would be nice to let the user have a tiny bit of control over how the code is activated. I did the same thing myself in my PKM generator, using just a bunch of checkboxes. You can of course also auto-detect which ARDS output "country" would be best by default on a code-to-code basis, based on the input language of the save file, although I think the user should be able to change that too. Too bad there doesn't appear to be a value in the save that specifically tells you if the game is Diamond or Pearl, HeartGold or Soulsilver, etc! I hope I didn't get to ranty with my unsolicited advice. Slightly off-topic: Hey Kazumi213, good to see you around! Thanks again for making that font (and figuring out the Unicode equivilant values?), as I have been using them since Sabresite gave them to me.
Grovyle91 Posted January 29, 2010 Author Posted January 29, 2010 Thanks! Just as my name suggests I guess... Well actually, it will only explain the speed thing... hehe I've programmed a lot of things just to learn it. First in Visual Basic, then in C# because it looks a lot at PHP. I've tried C# WPF as well, but since the forms are entirely different I'm skipping this one for a while... Uhm... to keep on-topic: Your tip for letting the users select which button it will activate is a real good one. I need to take a look at it how this exactly works. Automatic region selection is tough, since the save file doesn't have a bit or flag set which corresponds to a specific region. Automatic game selection is easy, it's already in the program just check for specific block endings. Each game save file has a specific block length (I'm talking about the first small one now) and location where this length is saved. Since this is always fixed I'm checking this for Diamond/Pearl, Platinum and eventually for HeartGold/SoulSilver. If none of these are found, the save file is not a Pokémon save file! However, it's also possible that in, let's say a Platinum save file at the D/P offset the exactly same value is written which gives the program the suggestion that it's a Diamond/Pearl save file instead of a Platinum save file. Though this chance is very, very low. If it does happens, I need to build in more checkers for other blocks. I've taken a screenshot of the upcoming AR export window. Let me know if something needs to be added or changed The export will be every Gift and Wonder Card in XML. Everything will be exported separately in this XML. I don't know if export to TXT will be handy, but if it does, I'll try to add this as well. Oh, and the selections and added custom IDs will be saved as well. Grtzz!!
Guest Posted January 29, 2010 Posted January 29, 2010 Nice, but why are my old wondercards still showing up in the Editor? I deleted the three Wondercards I had in my JP Platinum save file, I even saved three times in-game to make sure the changes applied. But no. The Wondercards still show up in the Editor. Why is that? Oh, and I can't import PCD and PGT files. It says "Value '54272' is not valid for 'Value'. 'Value' must be between 'Minimum' and 'Maximum'." It says almost the same thing for PGT files, but it'S 33024 instead of 54272.
Grovyle91 Posted January 29, 2010 Author Posted January 29, 2010 That's what the games does. There's no need to delete everything. If I'm not wrong, the game only overwrites the Gift Type from whatever it was to 0. This way the game thinks there's no Gift or Wonder Card in that slot. The rest will stay available if you look directly in the save. This is Platinum, HeartGold and SoulSilver only. Diamond and Pearl work different, these games have a setting which determines if a specific Gift or Wonder Card is active. Hmm... have you copied the error message (with trace)? It has definately something to do with the numeric value boxes, I don't know which one however. The trace message along with your PCD/PGT files will help me solving this issue. It's funny that it's D400 and 8100 in hex respectively, I'm wondering for what value. Grtzz!!
codemonkey85 Posted January 29, 2010 Posted January 29, 2010 Actually, there is a byte in the save file that corresponds to the save's region. This is documented on our wiki pages on the various save file structures. Offhand I believe it is located near the beginning of the small block, around where the trainer name and stuff is kept. To wit: Diamond and Pearl Platinum HeartGold and SoulSilver Also, I believe an option to export the ARDS codes to text would help some people, like people who don't know how to use the ARDS code manager, or who don't have the cable that comes with the ARDS, etc.
Guest Posted January 29, 2010 Posted January 29, 2010 That's what the games does. There's no need to delete everything. If I'm not wrong, the game only overwrites the Gift Type from whatever it was to 0. This way the game thinks there's no Gift or Wonder Card in that slot. The rest will stay available if you look directly in the save. This is Platinum, HeartGold and SoulSilver only.Diamond and Pearl work different, these games have a setting which determines if a specific Gift or Wonder Card is active. Hmm... have you copied the error message (with trace)? It has definately something to do with the numeric value boxes, I don't know which one however. The trace message along with your PCD/PGT files will help me solving this issue. It's funny that it's D400 and 8100 in hex respectively, I'm wondering for what value. Grtzz!! Hope you understand french I can translate if needed. PCD error: PGT error:
Grovyle91 Posted January 29, 2010 Author Posted January 29, 2010 Actually, there is a byte in the save file that corresponds to the save's region. This is documented on our wiki pages on the various save file structures. Offhand I believe it is located near the beginning of the small block, around where the trainer name and stuff is kept.To wit: Diamond and Pearl Platinum HeartGold and SoulSilver Also, I believe an option to export the ARDS codes to text would help some people, like people who don't know how to use the ARDS code manager, or who don't have the cable that comes with the ARDS, etc. Phew... I didn't see this coming... I'll build this in right away. I didn't know much about ARDS and such, I only have a M3 which uses XML based codes (and more file extensions...). XML is easy and works well now. But what's the best way to export to text? I see a lot of codes using this format: !!!Pokemon Heart Gold (J) !!IPKJ A587D7CD !!!Pokemon Soul Silver (J) !!IPGJ 7387AC7F !Misc Codes ::Max Money (Select) 94000130 FFFB0000 62110DC0 00000000 B2110DC0 00000000 00000088 000F423F D2000000 00000000 Should it be exported this way? I'll also add an option to select which gifts and/or wonder cards will be exported. And something live previewing so you could copy it right away. Hope you understand french I can translate if needed. PCD error: PGT error: Understanding it? Not much, but since it's a standard error I know what it says I see you're using version 1.2c. I don't know if version 1.3 gives the same error, but if it does, I'd like to have your PGT and PCD files to see what's causing this bug. Grtzz!!
codemonkey85 Posted January 30, 2010 Posted January 30, 2010 Hey Grovyle, have a look at the part of my PKMDS library that handles ARDS output functions: Public Class ARDSManager Public Enum DSButtons As UInt16 Always_Active = &HFFFF NDS_Not_Folded = &H7FFF Unknown1 = &HBFFF Debug = &HDFFF Unknown2 = &HEFFF Y = &HF7FF X = &HFBFF L = &HFDFF R = &HFEFF Down = &HFF7F Up = &HFFBF Right = &HFFDF Left = &HFFEF Start = &HFFF7 [select] = &HFFFB B = &HFFFD A = &HFFFE End Enum Public Enum Games As Byte Diamond Pearl Platinum HeartGold SoulSilver End Enum Public Enum PKMSaveAreas As Byte Party PC Day_Care Pal_Park GTS Roaming_1 Roaming_2 Roaming_3 Roaming_4 Roaming_5 End Enum Public Const DPPointerAdd As String = "B0000004 00000000" Public Const Destructor As String = "D2000000 00000000" Public Enum DPPointers As UInt32 Japanese = &HB21C6588 English = &HB21C4D28 French = &HB21C4EA8 Italian = &HB21C4E08 German = &HB21C4E68 Spanish = &HB21C4EC8 Korean = &HB21C2320 End Enum Public Enum PtPointers As UInt32 Japanese = &HB2101140 English = &HB2101D40 French = &HB2101F20 Italian = &HB2101EA0 German = &HB2101EE0 Spanish = &HB2101F40 Korean = &HB2102C40 End Enum Public Function PKMToARDS(ByVal PKM As Pokemon, _ ByVal _DSButtons As DSButtons, _ ByVal _Game As Games, _ ByVal _Country As Countries, _ ByVal _SaveArea As PKMSaveAreas, _ Optional ByVal _PCBox As PCBoxes = PCSlots.Slot1, _ Optional ByVal _PCSlot As PCSlots = PCBoxes.Box1, _ Optional ByVal _PartySlot As PartySlots = PartySlots.Slot1) As String 'First the If statement, along with the buttons to be pressed. PKMToARDS = "94000130 " & Hex(UInt16.Parse(_DSButtons)) & "0000" & vbNewLine 'Next, the pointer (or B code), depending on which game and which language 'the code is for. DP uses two lines, Pt uses one. Select Case _Game Case Games.Diamond Select Case _Country Case Countries.Japanese PKMToARDS &= Hex(UInt32.Parse(DPPointers.Japanese)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.English PKMToARDS &= Hex(UInt32.Parse(DPPointers.English)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.French PKMToARDS &= Hex(UInt32.Parse(DPPointers.French)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Italian PKMToARDS &= Hex(UInt32.Parse(DPPointers.Italian)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.German PKMToARDS &= Hex(UInt32.Parse(DPPointers.German)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Spanish PKMToARDS &= Hex(UInt32.Parse(DPPointers.Spanish)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Korean PKMToARDS &= Hex(UInt32.Parse(DPPointers.Korean)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine End Select Case Games.Pearl Select Case _Country Case Countries.Japanese PKMToARDS &= Hex(UInt32.Parse(DPPointers.Japanese)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.English PKMToARDS &= Hex(UInt32.Parse(DPPointers.English)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.French PKMToARDS &= Hex(UInt32.Parse(DPPointers.French)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Italian PKMToARDS &= Hex(UInt32.Parse(DPPointers.Italian)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.German PKMToARDS &= Hex(UInt32.Parse(DPPointers.German)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Spanish PKMToARDS &= Hex(UInt32.Parse(DPPointers.Spanish)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine Case Countries.Korean PKMToARDS &= Hex(UInt32.Parse(DPPointers.Korean)) & " 00000000" & vbNewLine & DPPointerAdd & vbNewLine End Select Case Games.Platinum Select Case _Country Case Countries.Japanese PKMToARDS &= Hex(UInt32.Parse(PtPointers.Japanese)) & " 00000000" & vbNewLine Case Countries.English PKMToARDS &= Hex(UInt32.Parse(PtPointers.English)) & " 00000000" & vbNewLine Case Countries.French PKMToARDS &= Hex(UInt32.Parse(PtPointers.French)) & " 00000000" & vbNewLine Case Countries.Italian PKMToARDS &= Hex(UInt32.Parse(PtPointers.Italian)) & " 00000000" & vbNewLine Case Countries.German PKMToARDS &= Hex(UInt32.Parse(PtPointers.German)) & " 00000000" & vbNewLine Case Countries.Spanish PKMToARDS &= Hex(UInt32.Parse(PtPointers.Spanish)) & " 00000000" & vbNewLine Case Countries.Korean PKMToARDS &= Hex(UInt32.Parse(PtPointers.Korean)) & " 00000000" & vbNewLine End Select End Select Dim Location As UInteger = 0UI Dim LengthHEX As String = "" Dim Data(235) As Byte Select Case _SaveArea Case PKMSaveAreas.Party Location = 236 * Integer.Parse(_PartySlot) LengthHEX = Hex(236).PadLeft(8, "0") Select Case _Game Case Games.Diamond Location += &H26C + &H94 Case Games.Pearl Location += &H26C + &H94 Case Games.Platinum Location += &H14 + &H98 End Select Case PKMSaveAreas.PC ReDim Data(135) Location = (136 * 30 * Integer.Parse(_PCBox)) + (136 * Integer.Parse(_PCSlot)) LengthHEX = Hex(136).PadLeft(8, "0") Select Case _Game Case Games.Diamond Location += &H26C + &HC104 Case Games.Pearl Location += &H26C + &HC104 Case Games.Platinum Location += &H14 + &HCF30 End Select End Select PKMToARDS &= "E" & Hex(Location).PadLeft(7, "0") & " " & LengthHEX & vbNewLine Array.Copy(EncryptPokemon(RawSerialize(PKM)), 0, Data, 0, Data.Length) Dim DataString As String = "" For i As Integer = 0 To Data.Length - 4 Step 4 Select Case True Case ((i Mod 8 = 0) And (i <> 0)) DataString &= vbNewLine Case ((i Mod 4 = 0) And (i <> 0)) DataString &= " " End Select For iC As Integer = 3 To 0 Step -1 DataString &= Hex(Data(i + iC)).PadLeft(2, "0") Next Next PKMToARDS &= DataString & vbNewLine & Destructor End Function End Class If you have any questions, feel free to ask and I'll see if I can remember the answer!
kazumi213 Posted January 30, 2010 Posted January 30, 2010 @codemonkey85: Mappings for latin and kana characters were known and well documented long before I build my table, but yeah, I reviewed them all and did the mapping for the remaining 2400 or so hangul chars . Some mappings had to be arbitrary, due to lack of better Unicode equivalents (special characters in the pokemon font). Here are some screenshots from my program showing correct kana and hangul glyphs on a WC. I expect to help Grovyle91 to implement them on his program. These shots are from an old alpha GUI that I used to focus on developing the WC display part. Raw byte values from the PCD had to be manually pasted... JPN Enigma Crystal Present before and after clicking on "Generate" button: KOR Secret Key before and after clicking on "Generate": These are the resulting images after clicking on "Save Image" button: JPN KOR
Guest Posted January 30, 2010 Posted January 30, 2010 Still doesn't work on v1.3. Different error message, however. Why would my Wondercards be the problem? I got them off the Events Contributions thread.
Grovyle91 Posted January 31, 2010 Author Posted January 31, 2010 The Wonder Cards may have some other values set of which I didn't know about. When I take a look at the files, I might be able to fix it in the next version. @codemonkey: I already wrote a couple of functions myself fine-tuning is on my mind now... However, that didn't stop me to take a look. Your way of using "select case true" (or switch in C#) is very interesting. I never looked at it that way, but I rather have if statements. C# requires "break;" at any case, this drives me crazy sometimes, and it doesn't help me saving lines. @kazumi: the screenshots look fantastic! I hope I can equal that with your help! Oh... @everyone: I found a bug in v1.3. The checkbox which sets the value if a gift or card is active or not in a DP save file don't work correctly. Just to let you know, use v1.2c if you want to use it setting. Grtzz!!
Guest Posted January 31, 2010 Posted January 31, 2010 Here are all my PGT and PCD files. Specifically, the Japanese Oak's Letter isn't working (Both the PGT and PCD.) Try others if you want, but so far from what I've tested, the GAMESTP Pichu and ALAMOS Darkrai work.
Grovyle91 Posted January 31, 2010 Author Posted January 31, 2010 I see the problem... I hate to say it, but the Japanese Oak's Letter is not valid. The English does. Here, take a look at the hex values of the PGTs: Japanese Oak's Letter: Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 00 81 03 00 00 00 92 59 7E 3A 8C 73 9F EF C7 43 ......’Y~:ŒsŸïÇC 00000010 2D 81 B7 7B D3 43 A8 56 32 59 A9 F1 3E A6 3B CC -.·{ÓC¨V2Y©ñ>¦;Ì 00000020 45 1E D6 CA E3 CA 77 82 43 F2 C5 51 A3 65 D0 DB E.ÖÊãÊw‚CòÅQ£eÐÛ 00000030 3F 8A B4 06 68 63 B5 EE 3F 89 E7 21 3C 96 73 A0 ?Š´.hcµî?‰ç!<–s* 00000040 49 AE E4 D2 CC 34 BA 16 E8 55 46 1B B1 6D 36 CA I®äÒÌ4º.èUF.±m6Ê 00000050 B6 B0 91 C5 38 B9 7F A1 EE 6B 6C CA FC 42 9C 2A ¶°‘Å8¹.¡îklÊüBœ* 00000060 DA A9 7F BC 5E B3 04 EA B1 CA 20 59 42 22 49 09 Ú©.¼^³.ê±Ê YB"I. 00000070 6B 3C F7 97 D3 42 FF A5 E4 EF C7 4F 7F B2 AD B5 k<÷—ÓBÿ¥äïÇO.².µ 00000080 5C D3 51 AF 49 04 A2 D0 0E E0 68 35 F8 2F 8D 22 \ÓQ¯I.¢Ð.àh5ø/." 00000090 D1 25 C1 D0 74 17 A7 F3 02 4E 3F 81 F4 C8 07 54 Ñ%ÁÐt.§ó.N?.ôÈ.T 000000A0 74 8C 44 C1 44 ED 23 98 D3 26 CD 1C 45 C5 F7 05 tŒDÁDí#˜Ó&Í.EÅ÷. 000000B0 13 2C 50 F5 ED 96 72 E2 27 20 BF C3 B8 18 97 62 .,Põí–râ' ¿Ã¸.—b 000000C0 C2 5C 15 FA 6F BE E3 9D 7D CF D4 75 7A 30 A9 E5 Â\.úo¾ã.}ÏÔuz0©å 000000D0 D9 3C 1A B2 70 61 D0 2E 0F F6 32 B6 AD 88 E5 A1 Ù<.²paÐ..ö2¶.ˆå¡ 000000E0 5F 8C C5 52 7F 2A AC 6C FF A3 C9 83 C4 9D DE 87 _ŒÅR.*¬lÿ£ÉƒÄ.Þ‡ 000000F0 D1 2C 4E B4 F9 6F 3A 3A 6A 5D 34 86 B8 5C D2 06 Ñ,N´ùo::j]4†¸\Ò. 00000100 DC 2C 30 FC Ü,0ü English Oak's Letter (the correct one): Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000100 00 00 00 00 .... The PGTs must be the same for all languages, the PCDs however, may vary since the information texts are different. You see that the Japanese PGT is just... well... I don't know what it is, it's just not valid. The same for the Japanese PCD. Try loading it in Pokesav, you'll see what I mean. I think I'll build in a function which determines if the file is valid or not instead of a vague error.
Guest Posted February 1, 2010 Posted February 1, 2010 (edited) That's why I just suggested on the contributions thread to re-upload the Japanese Oak's Letter, since it is corrupted. Nigoli uploaded a valid one. But I noticed, you seem to have forgot something in the editor... Wondercard ID's. The game keeps a record of the ID's of the Wondercards you receive to make it so you can't get the same wondercard twice. However, when just adding the PGT and PCD to the save file, it doesn't actually record the ID. With your program, are Wondercard ID's automatically added, or you simply forgot to add that? Edited February 2, 2010 by Guest
Grovyle91 Posted February 2, 2010 Author Posted February 2, 2010 Yeah, that's right. I didn't build a function to simulate this, because it's pointless to do that. The game checks and registers these IDs only when you receive the gift via distributions. The game won't check it again when you already have it on your save file. You can however, if you want, add these IDs manually with the "Mystery Gift related" button.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now