SirLoin4 Posted December 13, 2015 Posted December 13, 2015 i just wondering pokemon portrait is have a text on it That Pokemon is known as a Florges, and it looks like the relieved/sad portrait, if I remember right.
Silverhawke Posted December 13, 2015 Posted December 13, 2015 (edited) so about the IMG files, for the header you can refer to Megadrifter's thread about it. i haven't figured out the ETC1 format yet, though there's a specification and implementation, i couldn't get it to work (yet... or maybe i'll just implement it myself). for RGB8 and RGBA8888, the pixel data are stored in little-endian (BGR/BGRA) and stored bottom-row first. (so if you'd unscramble the image and output it straight to BMP format you'd have no problems) the pixels are arranged this way, in blocks of 8x8. the blocks are then arranged left-to-right, bottom-to-top: hopefully this helps visualizing it, done in 3 steps (which is basically taking blocks of 2n x n pixels, stack them on each other, for n = 1,2,4) this is what it looks like with three steps separated: raw pixel data first unscrambling second unscrambling third unscrambling, finished this also applies to portrait pictures, which i suppose Andibad has already done. the portrait pictures has japanese text below them describing the emotion of the portrait. here's the source code to convert IMG <-> PNG: https://dl.dropboxusercontent.com/u/40407085/Stuff/imgconv.cpp you need lodepng.h and lodepng.cpp to compile that. and the compiled version with source code is here: https://dl.dropboxusercontent.com/u/40407085/Stuff/imgconv.zip right now the tool can only convert RGB8 and RGBA8888 though. also: all portraits in the data (but i deleted redundant ones): https://mega.nz/#!5EBBDT7B!jSV9Y0mnoOWfyvBzpy2Me4gaNrxmGlHnisxj7yUxRJs Edited December 14, 2015 by Silverhawke
psy_commando Posted December 13, 2015 Author Posted December 13, 2015 On my end, I can confirm that the starter menu is hard-coded. And the starter moves are most likely too. I can't find the literals for all starters for some reasons however, I changed the 7 I could find, and it only changed the 3d model of 7 of the starters, their stats and even the actual pokemon you get to play after the character select screen stays the same.. Here's what you see: [ATTACH=CONFIG]12804[/ATTACH] And what's displayed on the bottom screen: [ATTACH=CONFIG]12805[/ATTACH] Afterward it gave me the starter I was supposed to get, and not poochyena. For those interested, the 7 starters IDs I found and changed are located at 0x004F 1618 in the code.bin. There seems to be some ldr opcodes that refers to those literals a bit above. I was able to find them using radare2. But I really wonder where the rest of them are ? They're probably not stored as 4 bytes integers if they're in there.. Also, here are the starter pokemon IDs for those interested. (Its one of those big ugly if/else if statement in the scripts): if pokemonIndexHero == 30 then CH("PIKACHUU_H"):ResetFacialMotion() elseif pokemonIndexHero == 595 then CH("POKABU_H"):ResetFacialMotion() elseif pokemonIndexHero == 598 then CH("MIJUMARU_H"):ResetFacialMotion() elseif pokemonIndexHero == 592 then CH("TSUTAAJA_H"):ResetFacialMotion() elseif pokemonIndexHero == 1 then CH("FUSHIGIDANE_H"):ResetFacialMotion() elseif pokemonIndexHero == 5 then CH("HITOKAGE_H"):ResetFacialMotion() elseif pokemonIndexHero == 10 then CH("ZENIGAME_H"):ResetFacialMotion() elseif pokemonIndexHero == 197 then CH("CHIKORIITA_H"):ResetFacialMotion() elseif pokemonIndexHero == 200 then CH("HINOARASHI_H"):ResetFacialMotion() elseif pokemonIndexHero == 203 then CH("WANINOKO_H"):ResetFacialMotion() elseif pokemonIndexHero == 322 then CH("KIMORI_H"):ResetFacialMotion() elseif pokemonIndexHero == 325 then CH("ACHAMO_H"):ResetFacialMotion() elseif pokemonIndexHero == 329 then CH("MIZUGOROU_H"):ResetFacialMotion() elseif pokemonIndexHero == 479 then CH("NAETORU_H"):ResetFacialMotion() elseif pokemonIndexHero == 482 then CH("HIKOZARU_H"):ResetFacialMotion() elseif pokemonIndexHero == 485 then CH("POTCHAMA_H"):ResetFacialMotion() elseif pokemonIndexHero == 537 then CH("RIORU_H"):ResetFacialMotion() elseif pokemonIndexHero == 766 then CH("HARIMARON_H"):ResetFacialMotion() elseif pokemonIndexHero == 769 then CH("FOKKO_H"):ResetFacialMotion() elseif pokemonIndexHero == 772 then CH("KEROMATSU_H"):ResetFacialMotion() end 332 is poochyena btw for those wondering
evandixon Posted December 14, 2015 Posted December 14, 2015 Interesting bit of what's probably concept art, with some debug lines over it.
Andibad Posted December 14, 2015 Posted December 14, 2015 (edited) i made mistake on parsing sir0 message on my tools , my bad. here for fix one. this build also can extract cte image with support most pixel format, little bit tweak on extension renaming and add some example message code on msg_code.json. and i notice GYU0 file is an compressed format, need poking exefs maybe i get something >.> EDIT : uploaded project on github done : https://github.com/andibadra/unFARC Edited December 14, 2015 by Andibad
SirLoin4 Posted December 14, 2015 Posted December 14, 2015 I was wondering, has anyone here found out about how to activate Primal Reversion yet, or is that only for the boss battle against them? Anything in the ROM that suggests something like that?
Andibad Posted December 15, 2015 Posted December 15, 2015 (edited) i just wondering how to get face graphic offset on the game, so far on lua script folder is only defined pokemon id like this one : function Dungeon_OnTalkedFuupa(tokihanatareta) if tokihanatareta == 0 then WINDOW:DrawFaceFromPokemonIndex(20, 88, 926, false, FACE_TYPE.NORMAL) else WINDOW:DrawFaceFromPokemonIndex(20, 88, 927, false, FACE_TYPE.NORMAL) end or call actor function ... to get pokemon id. hoppa id in there is 926 (pokemon id list). and also is have 16 (+16 special expression, not all pokemon have this) kind of expression face ... here for list of them : NORMAL HAPPY PAIN ANGRY THINK SAD WEEP SHOUT TEARS DECIDE GLADNESS EMOTION SURPRISE FAINT RELEIF CATCHBREATH SPECIAL01~16 special expression is have number on it like this one : on FARC type 0x5, when not mark as has filename, filenameoffset field used as unique id? <.<, and also on sir0 message (on smd, not debug), unknown value is used as unique id? >.> since on lua script file is have negative id for calling an dialog text ... EDIT: I was think SMD use zlib compression on gyu files and save files, i will check it later. Edited December 16, 2015 by Andibad
Silverhawke Posted December 15, 2015 Posted December 15, 2015 well they couldn't make it more literal. that if condition is literally "if not unbound then". so 926 is Hoopa Confined and 927 is Hoopa Unbound. i talked with psy_commando and we agree that the negative id in the lua script was supposed to be some hex number, which was interpreted as a signed number. it should make more sense when converted back to (dword?) hexadecimal. on the other hand, i updated my pokemon_data_info.bin notes: https://dl.dropboxusercontent.com/u/40407085/Stuff/pkmn_data_info_notes.txt as well as data parsed from that bin files as far as i know: https://dl.dropboxusercontent.com/u/40407085/Stuff/pkmn_data.txt we can change a bunch of things in here already
psy_commando Posted December 15, 2015 Author Posted December 15, 2015 So, I've been digging in the executable for a while now, but I just can't find the pokemon IDs used in the starter selection screen.. I have no ideas why there are 7 of the 20 starters that have their model ID as literal in the bin, but none of the others do.. It also seems the game refers to a lot of data loaded at runtime at static memory addresses. There are a lot of fairly big 32bits pointers stored in the literal pools, and they don't point to sensible locations in the code bin most of the time.. So they have to point to places in memory.. But the only way to figure that would be with an emulator or debugger... At least AFAIK. Unless someone has some suggestion ? ^^; i just wondering how to get face graphic offset on the game, so far on lua script folder is only defined pokemon id like this one : function Dungeon_OnTalkedFuupa(tokihanatareta) if tokihanatareta == 0 then WINDOW:DrawFaceFromPokemonIndex(20, 88, 926, false, FACE_TYPE.NORMAL) else WINDOW:DrawFaceFromPokemonIndex(20, 88, 927, false, FACE_TYPE.NORMAL) end or call actor function ... to get pokemon id. hoppa id in there is 926 (pokemon id list). and also is have 16 (+16 special expression, not all pokemon have this) kind of expression face ... here for list of them : NORMAL HAPPY PAIN ANGRY THINK SAD WEEP SHOUT TEARS DECIDE GLADNESS EMOTION SURPRISE FAINT RELEIF CATCHBREATH SPECIAL01~16 special expression is have number on it like this one : If the faces are grouped by pokemons in the face_graphic.bin file, its probably structured like the kaomado.kao files in EoS. Basically, the ID of the actor would the index in the face_graphic.bin file, if we consider that each entry is 16 to 32 portraits long. I don't know if the amount of portraits for each pokes is specified in the table of content though. I didn't really investigate that file much yet. But in EoS, the table of content was just a table made of entries containing 40 pointers, null pointers indicating missing portraits. on FARC type 0x5, when not mark as has filename, filenameoffset field used as unique id? <.<, and also on sir0 message (on smd, not debug), unknown value is used as unique id? >.> since on lua script file is have negative id for calling an dialog text ... i talked with psy_commando and we agree that the negative id in the lua script was supposed to be some hex number, which was interpreted as a signed number. it should make more sense when converted back to (dword?) hexadecimal. Yeah, the decompiler interprets the string UUID as signed 32 bits integers. But originally they were probably just an hexadecimal literal. Or maybe even some kind of macro that got replaced by their buildscript. The decompiler doesn't seem to have an option to set how to interpret literals, but it might be possible to write a simple script to convert large decimal signed value to an hexadecimal string, and just mass replace them. But, I'm thinking that the devs didn't just place those hex strings by themselves, Some kind of automated reference handling system probably did the work for them. on the other hand, i updated my pokemon_data_info.bin notes: https://dl.dropboxusercontent.com/u/40407085/Stuff/pkmn_data_info_notes.txt as well as data parsed from that bin files as far as i know: https://dl.dropboxusercontent.com/u/40407085/Stuff/pkmn_data.txt we can change a bunch of things in here already Btw, have you noticed that in all files ending in "_info.bin" there is a short 64 bytes table after the last entry ? I really wonder what its for, and how the game figures out its not just another entry.. Also, have you looked at pokemon_evolution.bin ? It seems to contain a lot of extra data on pokemmon evolutions and megas.
Silverhawke Posted December 16, 2015 Posted December 16, 2015 Btw, have you noticed that in all files ending in "_info.bin" there is a short 64 bytes table after the last entry ? I really wonder what its for, and how the game figures out its not just another entry.. Also, have you looked at pokemon_evolution.bin ? It seems to contain a lot of extra data on pokemmon evolutions and megas. i didn't notice that! well, i noticed that it's a thing in pokemon_data_info.bin but i didn't know it's a thing in other _info files. i haven't really looked into it, and if it exists in all other _info.bin files, i guess the game already knew beforehand that the last 64 bytes are for something... i haven't looked at that! i didn't see it because it's not in the pokemon folder, oops
Andibad Posted December 16, 2015 Posted December 16, 2015 well they couldn't make it more literal. that if condition is literally "if not unbound then". so 926 is Hoopa Confined and 927 is Hoopa Unbound.i talked with psy_commando and we agree that the negative id in the lua script was supposed to be some hex number, which was interpreted as a signed number. it should make more sense when converted back to (dword?) hexadecimal. i was think is an unique id (on integer value or on hexadecimal value). look this hoopa dialog on dungeon script : function Dungeon_OnTalkedFuupa(tokihanatareta) ... if DUNGEON_MENU:IsFuupaLegendSummoned() then WINDOW:Talk_Fuupa(1157317309) else WINDOW:Talk_Fuupa(1576943368) WINDOW:SelectChain(1227155743, 2) WINDOW:SelectChain(-2106081020, 0) WINDOW:DefaultCursor(1) ret = WINDOW:SelectEndTalk(MENU_SELECT_MODE.ENABLE_CANCEL) ... end end see on WINDOW:Talk_Fuupa(1157317309), 1157317309 is refer to message unique id (u1). and i got this message :
psy_commando Posted December 16, 2015 Author Posted December 16, 2015 i didn't notice that! well, i noticed that it's a thing in pokemon_data_info.bin but i didn't know it's a thing in other _info files. i haven't really looked into it, and if it exists in all other _info.bin files, i guess the game already knew beforehand that the last 64 bytes are for something... i haven't looked at that! i didn't see it because it's not in the pokemon folder, oops Honestly, I hope the game doesn't assume hardcoded offsets in those files.. It would make things much more difficult ^^; And its really not much, but I've been going through files and trying to decipher as much as possible then moved to other files, and I got this: [font=Fixedsys] ==================================== pokemon_evolution.bin ==================================== Offset Name Size Type Description ---------- ---- ---- ---- ----------- 0x00 Sir0Header 16 - The standard SIR0 header. [] 0x10 EvoDataTbl vary - [ PkmnEvoData 12 - [ ] ... ] PtrEvoInfoTbl vary - [ Entry 12 - [ PtrEvoData 4 uint32 A pointer to a structure containing detail on the evolution of the pokemon stored in the EvoDataTbl. unk1 4 uint32 unk2 4 uint16 unk3 4 uint16 ] ... ] Subheader 16 Contain a pointer to the data, and the nb of entries. [ PtrEvoInfoTbl 4 uint32 A pointer to the PtrEvoInfoTbl. NbEntriesEvoInfTbl 4 uint32 The nb of entries in the PtrEvoInfoTbl table. ZeroPadding 8 - Null bytes. ] SIR0EncodedPtrOffsetTbl [] [/font] I noticed a lot of other little things, but I didn't write those down yet because I still got to validate stuff. i was think is an unique id (on integer value or on hexadecimal value). look this hoopa dialog on dungeon script : function Dungeon_OnTalkedFuupa(tokihanatareta) ... if DUNGEON_MENU:IsFuupaLegendSummoned() then WINDOW:Talk_Fuupa(1157317309) else WINDOW:Talk_Fuupa(1576943368) WINDOW:SelectChain(1227155743, 2) WINDOW:SelectChain(-2106081020, 0) WINDOW:DefaultCursor(1) ret = WINDOW:SelectEndTalk(MENU_SELECT_MODE.ENABLE_CANCEL) ... end end see on WINDOW:Talk_Fuupa(1157317309), 1157317309 is refer to message unique id (u1). and i got this message : That's what we're saying. Its just that it got decompiled as a large signed integer instead of an hex string for some reasons. Its been like that since GTI.
Andibad Posted December 21, 2015 Posted December 21, 2015 (edited) Move data (on SMD) stored on waza_data_info.bin (act index information) and act_data_info.bin (move information). You can see move list on SMD here (include unused, named xl move, unnamed combination move and unnamed xl moves). waza_data_info.bin Containing index for move data (act_data_info.bin) and effect (act_effect_data_info.bin), 18 byte/entry. [TABLE=class: grid, width: 600] [TR] [TD=align: center]offset (0x) [/TD] [TD=align: center]size (byte)[/TD] [TD=align: center]comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x0[/TD] [TD]2[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x2[/TD] [TD]2[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x4[/TD] [TD]2[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x6[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x7[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x8[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0x9[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0xA[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0xB[/TD] [TD]1[/TD] [TD]constant 0x0*[/TD] [TD][/TD] [/TR] [TR] [TD]0xC[/TD] [TD]2[/TD] [TD]act_data_info index (uint)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0xE[/TD] [TD]1[/TD] [TD]?[/TD] [TD][/TD] [/TR] [TR] [TD]0xF[/TD] [TD]1[/TD] [TD]?[/TD] [TD][/TD] [/TR] [TR] [TD]0x10[/TD] [TD]1[/TD] [TD]constant 0x1[/TD] [TD][/TD] [/TR] [TR] [TD]0x11[/TD] [TD]1[/TD] [TD]constant 0x64[/TD] [TD][/TD] [/TR] [/TABLE] * only on Dragon Rage not 0x0 act_data_info.bin Containing move data. 160 byte/entry Section (start from 0x0 until 0x0f) *unknown Primary Effect Moves (start from 0x10 until 0x27) 0x10 ~ 0x23 - ??? 0x24 - 2 byte - (num)(uint) Type effectiveness (even is immune 0x or not effective 0.5/0.25x to make them damage 1x) 0x26 - 2 byte - (0x00) unused Secondary Effect Moves (start from 0x28 until 0x57) [TABLE=class: grid, width: 600] [TR] [TD=align: center]Offset (0x0) [/TD] [TD=align: center]Size (Byte) [/TD] [TD=align: center]Comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x28[/TD] [TD]2[/TD] [TD]Effect Rate Value (0 - no effect, 1~100)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x2A[/TD] [TD]2[/TD] [TD]HP/Belly Change's Value[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x2C[/TD] [TD]2[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x2E[/TD] [TD]2[/TD] [TD]Trap Flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x30[/TD] [TD]2[/TD] [TD]Status Change's (sleep, confused, poisoned, etc)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x32[/TD] [TD]2[/TD] [TD]Stat Change's (index)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x34[/TD] [TD]2[/TD] [TD]Type Change's (0 - no effect, 1 - normal, 19 - NoType)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x36[/TD] [TD]2[/TD] [TD]Terrain Change's[/TD] [TD]uint[/TD] [/TR] [/TABLE] *it will repeated until 0x57 (3 Effect) Status List : 0 None 1 nightmare 2 sleepless 3 sleep 4 yawning 5 napping 6 7 burn 8 poisoned 9 badly poisoned 10 paralysis 11 frozen 12 stuck 13 Ingrain 14 petrified 15 bound 16 Fire Spin 17 Sand Tomb 18 Clamp 19 Whirlpool 20 Magma Storm 21 Infestation 22 flinch 23 truant 24 confused 25 recoil 26 lethargic 27 infatuated 28 taunted 29 encore 30 discord 31 Bide 32 Solar Beam 33 Focus Punch 34 flying 35 bouncing 36 digging 37 Future Sight 38 Sky Drop 39 Suspended 40 charging 41 enraged 42 Round 43 Razor Wind 44 Sky Attack 45 Skull Bash 46 Doom Desire 47 Dive 48 Shadow Force 49 Phantom Force 50 Ice Burn 51 Freeze Shock 52 Geomancy 53 Reflect 54 Safeguard 55 Light Screen 56 Counter 57 protect 58 Quick Guard 59 Wide Guard 60 Mat Block 61 Crafty Shield 62 King's Shield 63 Spiky Shield 64 Mirror Coat 65 enduring 66 mist 67 healthy 68 Aqua Ring 69 Lucky Chant 70 Metal Burst 71 Magic Coat 72 Snatch 73 cursed 74 substitute 75 decoy 76 Gastro Acid 77 Heal Block 78 embargo 79 Leech Seed 80 Destiny Bond 81 Sure Shot 82 Focus Energy 83 encouraged 84 pierce 85 blinker 86 Eyedrops 87 mobile 88 trained 89 stockpiling 90 radar 91 scanning 92 grudge 93 exposed 94 Miracle Eye 95 terrified 96 grounded 97 Magnet Rise 98 telekinesis 99 autotomize 100 sealed 101 Perish Song 102 wish 103 transform 104 electrify 105 powder 106 puppet 107 awakened 108 berserk 109 110 self-destruct 111 explosion 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 fainted 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 rainbow 161 swamp 162 sea of fire Terrain List : 0 None 1 Clear 2 Sunny 3 Rain 4 Hail 5 Sandstorm 6 Mud Sport 7 Water Sport 8 Defused 9 Thief Alert 10 Trick Room 11 Magic Room 12 Monster House 13 Shop 14 Nullified 15 Luminous 16 17 heavy rain 18 harsh sunlight 19 strong winds 20 ineffective weather 21 gravity 22 Wonder Room 23 Ion Deluge 24 Grassy Terrain 25 Misty Terrain 26 Electric Terrain 27 Happy Hour 28 apathetic 29 Enemy Discord 30 disabled Accurate Section (start from 0x57 until 0x5b) [TABLE=class: grid, width: 600] [TR] [TD=align: center]Offset (0x0) [/TD] [TD=align: center]Size (Byte) [/TD] [TD=align: center]Comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x58[/TD] [TD]1[/TD] [TD]Base Accurate Value (0~100, 101 : sure shoot)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x5A[/TD] [TD]1[/TD] [TD]Maximum Accurate Value (0~100, 101 : sure shoot)[/TD] [TD]uint[/TD] [/TR] [/TABLE] Section (start from 0x5c until 0x7b) *is seems related to accurate related like critical, etc, is have 4 group Move Damage, PP, Range, Counter Section (start from 0x7c until 0x93) [TABLE=class: grid, width: 600] [TR] [TD=align: center]Offset (0x0) [/TD] [TD=align: center]Size (Byte) [/TD] [TD=align: center]Comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x7C[/TD] [TD]1[/TD] [TD]Size Type Move (size of pokemon or move combination)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x7D[/TD] [TD]1[/TD] [TD]Type Move (1 - normal, 19 - NoType)[/TD] [TD]uint [/TD] [/TR] [TR] [TD]0x7E[/TD] [TD]1[/TD] [TD]Attribute[/TD] [TD]uint [/TD] [/TR] [TR] [TD]0x7F[/TD] [TD]1[/TD] [TD]Damage / ATK Base Value[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x80[/TD] [TD]1[/TD] [TD]? Damage Max [/TD] [TD][/TD] [/TR] [TR] [TD]0x81[/TD] [TD]1[/TD] [TD]PP Base Value [/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x82[/TD] [TD]1[/TD] [TD]? PP Max [/TD] [TD][/TD] [/TR] [TR] [TD]0x83[/TD] [TD]1[/TD] [TD]Constant 0xFF[/TD] [TD][/TD] [/TR] [TR] [TD]0x84[/TD] [TD]1[/TD] [TD]Cut Corner Flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x85[/TD] [TD]1[/TD] [TD]more time to attack Flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x86[/TD] [TD]1[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x87[/TD] [TD]1[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x88[/TD] [TD]1[/TD] [TD]Tiles Count[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x89[/TD] [TD]1[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x8A[/TD] [TD]1[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x8B[/TD] [TD]1[/TD] [TD][/TD] [TD][/TD] [/TR] [TR] [TD]0x8C[/TD] [TD]1[/TD] [TD]Range[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x8D[/TD] [TD]1[/TD] [TD]Target[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x8E[/TD] [TD]1[/TD] [TD]Piercing ATK flag[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x8F[/TD] [TD]1[/TD] [TD]Sleep ATK flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x90[/TD] [TD]1[/TD] [TD]Faint ATK flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x91[/TD] [TD]1[/TD] [TD]Constant 0x1[/TD] [TD][/TD] [/TR] [TR] [TD]0x92[/TD] [TD]1[/TD] [TD]Nearby damage flag[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x93[/TD] [TD]1[/TD] [TD]Hit Counter Index (act_hit_count_table_data_info.bin)[/TD] [TD]uint[/TD] [/TR] [/TABLE] Section (start from 0x94 until 0x9f) *unknown act_xlwaza.bin Containing id for xl moves. for move data, see on act_data_info.bin. 8 byte/entry. [TABLE=class: grid, width: 600] [TR] [TD=align: center]Offset (0x0) [/TD] [TD=align: center]Size (Byte) [/TD] [TD=align: center]Comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x0[/TD] [TD]2[/TD] [TD]Move Action Index[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x2[/TD] [TD]2[/TD] [TD]Move Action Index Taget[/TD] [TD]uint[/TD] [/TR] [/TABLE] act_hit_count_table_data_info.bin Data for hit counter for act_data_info.bin (0x93). 16 byte/entry. [TABLE=class: grid, width: 600] [TR] [TD=align: center]Offset (0x0) [/TD] [TD=align: center]Size (Byte) [/TD] [TD=align: center]Comment [/TD] [TD=align: center][/TD] [/TR] [TR] [TD]0x0[/TD] [TD]1[/TD] [TD]Repeat until move miss to target (bool, 1 for true, 0 for false)[/TD] [TD]bool[/TD] [/TR] [TR] [TD]0x1[/TD] [TD]1[/TD] [TD]hit count minimum (min 2)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x2[/TD] [TD]1[/TD] [TD]hit count maximum (max 5, min 2, if same it will count as 1 hit)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x3[/TD] [TD]1[/TD] [TD]constant 0x0[/TD] [TD][/TD] [/TR] [TR] [TD]0x4[/TD] [TD]2[/TD] [TD]2 hit chance rate (min 0, max 100)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x6[/TD] [TD]2[/TD] [TD]3 hit chance rate (min 0, max 100)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0x8[/TD] [TD]2[/TD] [TD]4 hit chance rate (min 0, max 100)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0xA[/TD] [TD]2[/TD] [TD]5 hit chance rate (min 0, max 100)[/TD] [TD]uint[/TD] [/TR] [TR] [TD]0xC[/TD] [TD]4[/TD] [TD]constant 0x0[/TD] [TD][/TD] [/TR] [/TABLE] act_param_data_info.bin only have 1 byte/entry, i think is store single value. maybe used on act_data_info.bin act_effect_data_info.bin have 68 byte/entry. i was thing is related to animation. Edited December 27, 2015 by Andibad
Blob55 Posted December 22, 2015 Posted December 22, 2015 Is it possible to make a mod of this which makes EXP gain quicker and don't have allies level up with you? I hate forever being behind Salamence.
psy_commando Posted December 23, 2015 Author Posted December 23, 2015 Is it possible to make a mod of this which makes EXP gain quicker and don't have allies level up with you? I hate forever being behind Salamence. Eventually, yes. But we're just doing research and tools here for now.
purpasmart Posted December 26, 2015 Posted December 26, 2015 Hello, I currently coding my own pokemon mystery dungeon engine and I would love to know what the base power constants for all the moves are? Is that info available now? (I'm assuming they aren't the same as the mainline games)
psy_commando Posted December 26, 2015 Author Posted December 26, 2015 Happy holidays ! I've been working on a thing I finally got the UI to work without freezing the game, and actually displaying properly! The initial movesets and abilities being wrong, and the crashing on some cutscenes (When forcing the game to use the HERO/PARTNER actors in cutscenes) hasn't been addressed yet though. But once its done, this should work pretty well I noticed that not all pokemon that aren't the official starters had their initial moveset set to piplup's. And it seems like, official starters picked through my modification still get assigned the correct moveset. So it might mean that we might be able to affect what moveset and abilities are assigned somehow. For example: - Poochyena gets piplup's moveset + ability. - Mightyena gets piplup's moveset + ability. - Squirtle gets its own moveset + ability. - Eevee gets Oshawott's moveset + ability.
psy_commando Posted December 26, 2015 Author Posted December 26, 2015 Hello, I currently coding my own pokemon mystery dungeon engine and I would love to know what the base power constants for all the moves are? Is that info available now? (I'm assuming they aren't the same as the mainline games) PMD never worked like main series game for stats. That's pretty much a big part of what makes it interesting I can't imagine dealing with dungeons as a starter with base 300 stats or something against an army of high level fully evolved pokes D: And, just scroll back up a few post until you reach Andibad's post. They're stored in act_data_info.bin apparently. I'm guessing someone on gamefaq might have made a list with those values. But otherwise, you'll probably have to make a list yourself. Unless you use PMD2 stats. There are already excel sheets and etc filled with this kind of stuff floating around the web.
purpasmart Posted December 27, 2015 Posted December 27, 2015 PMD never worked like main series game for stats. That's pretty much a big part of what makes it interesting I can't imagine dealing with dungeons as a starter with base 300 stats or something against an army of high level fully evolved pokes D:And, just scroll back up a few post until you reach Andibad's post. They're stored in act_data_info.bin apparently. I'm guessing someone on gamefaq might have made a list with those values. But otherwise, you'll probably have to make a list yourself. Unless you use PMD2 stats. There are already excel sheets and etc filled with this kind of stuff floating around the web. Alright, thanks, Decided to go with skies move base power, currently making a huge LUT for all the moves, its gonna take a while...
Andibad Posted December 27, 2015 Posted December 27, 2015 Alright, thanks, Decided to go with skies move base power, currently making a huge LUT for all the moves, its gonna take a while... you can see my post on this page, i already update with my current note ...(is almost done on most view-able data). right now i still looking for break wall flag and primary effect on it >.>
psy_commando Posted December 27, 2015 Author Posted December 27, 2015 Alright, thanks, Decided to go with skies move base power, currently making a huge LUT for all the moves, its gonna take a while... I don't mean to tell you how to do your job, but you probably really don't want to store data in your code like that ^^; You should put that in some config/data files outside your executable. It will make maintenance and improvements a thousand time easier, not to mention it allows for easier modding too. And you won't need to recompile each times you change something. XML/JSON are really good and well supported by a ton of libraries around, and they're great at storing data, you can zip them too if they get too big. And XML is great for mass search and replace operations, thanks to its predictable tag layout. It might be worth it looking into those? Just some thoughts ^^;
purpasmart Posted December 27, 2015 Posted December 27, 2015 I don't mean to tell you how to do your job, but you probably really don't want to store data in your code like that ^^;You should put that in some config/data files outside your executable. It will make maintenance and improvements a thousand time easier, not to mention it allows for easier modding too. And you won't need to recompile each times you change something. XML/JSON are really good and well supported by a ton of libraries around, and they're great at storing data, you can zip them too if they get too big. And XML is great for mass search and replace operations, thanks to its predictable tag layout. It might be worth it looking into those? Just some thoughts ^^; Thanks for the advice, I might do that later down the road, but for now I'm coding this project entirely in C, plus with a look up table it makes it quite efficient in terms performance.
evandixon Posted December 28, 2015 Posted December 28, 2015 Thanks for the advice, I might do that later down the road, but for now I'm coding this project entirely in C, plus with a look up table it makes it quite efficient in terms performance. In some cases maintainability is more important than performance. Even the original games had a data file that's read on demand. But regardless how you do it, good luck!
BattleLegend Posted December 28, 2015 Posted December 28, 2015 In some cases maintainability is more important than performance. Even the original games had a data file that's read on demand.But regardless how you do it, good luck! Looks way beyond the greatness of his work!
SirLoin4 Posted December 28, 2015 Posted December 28, 2015 Has anyone found out anything about accessing Primal Reversions for Groudon and Kyogre?
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