StarsMmd Posted September 2, 2015 Posted September 2, 2015 (edited) The world's first Pokemon : Gale of Darkness hack! Main Features - Physical/Special Split - Gen VI type matchup chart including fairy type - New set of shadow pokemon and other obtainable pokemon - Moves and abilities from later generations - More challenging opponents - Bonsly is finally playable! Future Features -Redone battle CDs They will come in a later update but may not make sense for now -Redone Battle bingo Again, they are currently broken but will be fixed later -New music Nobody knows how to do this yet. I may have found a lead but it will take a lot of reverse engineering. I've found a program that can convert the music to other formats. Will attempt to reverse the process in a few months time when all other work is done. -New Pokemon Nobody understand the model and animation formats yet so may be some years away Discussion A big issue I found with was that some of the shadow pokemon that are obtained later are obtained too late to be used in your team. I have put some thought into the availability of pokemon but it will be impossible to please everybody as our individual preferences will differ. The purification rate of the shadow pokemon will have a shallower curve so the ones obtained later shouldn't be as hard to integrate into your team. Coupled with the steeper level curve it will be easy to add them to your team. Also, colosseum and had shadow pokemon in them which were hard to obtain in the gen III games and were nice for completing the pokedex. However, most of them were really useless pokemon. I aimed to add all the most popular and powerful pokemon. I will upload the full list of obtainable pokemon shortly. Sorry if your favourite pokemon didn't make it but I'll be releasing hack tools in the coming months which you can use to tweak the hack to your liking Download Page The thread where the download links and updates will be. Release Thread (with download links) Edited June 6, 2017 by StarsMmd 1
GamingAori Posted September 2, 2015 Posted September 2, 2015 this sound really nice keep up the work man
Dio_Vento Posted September 9, 2015 Posted September 9, 2015 I'd love to see a release of this without any of the base stat modifications or retypings/new abilities.
StarsMmd Posted September 9, 2015 Author Posted September 9, 2015 I'd love to see a release of this without any of the base stat modifications or retypings/new abilities. I know it's always the case that different people want different things. I'll explain the logic behind most of the changes. My aim with the changes was to make the pokemon more similar in play style to their gen 6 counterparts. A pokemon like sableye, for example, wasn't very useful until prankster came along. I just wanted as many pokemon as possible to be viable. All the stat changes are changes that occured between canon gens 3-6. The type changes mainly increased the number of dragon and fairy type pokemon which were very few in gen 3. From a creative point of view, I'd like the other trainers to have varied teams while still being strong. In the original lovrina uses pokemon like delcatty and farfetch'd and snattle uses pokemon like solrock and castform. Having more viable pokemon means I can make more exciting battles. I will be socumenting all the changes and they are for the most part relatively intuitive and I've put s lot of consideration into them. I'm sure if you played it, you wouldn't mind it at all. All that being said, I do understand that it can all get a bit confusing so once I release the hack I'll work on a quick modification where the stats are left unchanged.
Blob55 Posted September 29, 2015 Posted September 29, 2015 I'm really looking forward to this and I'm ok with most of the Pokémon from gens 4-6 not being available, as Orre imports most of its Pokémon anyway. BTW, can you add more Shadow Pokémon, plus Pokémon available through e-Cards only?
StarsMmd Posted September 29, 2015 Author Posted September 29, 2015 I'm really looking forward to this and I'm ok with most of the Pokémon from gens 4-6 not being available, as Orre imports most of its Pokémon anyway.BTW, can you add more Shadow Pokémon, plus Pokémon available through e-Cards only? I know how to add more shadow Pokemon but I'm not sure how the game will handle it and it will take some time to test so I'm not adding more for now. There is already a large number of obtainable Pokemon and snagging shadow pokemon can get very tedious anyway. So the possibility is there for the future but it could end up being problematic.
Blob55 Posted September 29, 2015 Posted September 29, 2015 I know how to add more shadow Pokemon but I'm not sure how the game will handle it and it will take some time to test so I'm not adding more for now. There is already a large number of obtainable Pokemon and snagging shadow pokemon can get very tedious anyway. So the possibility is there for the future but it could end up being problematic. Then what about adding more Pokémon to the PokéSpots and replacing other Shadow Pokémon? Also, you could maybe switch around the obtainable Shadow Pokémon, like getting Teddiursa later and Dodrio sooner.
StarsMmd Posted September 29, 2015 Author Posted September 29, 2015 I've already replaced almost every single shadow Pokemon. I've replaced pokespot Pokemon too but adding more than 3 to a pokespot is currently beyond me.
troyz1993 Posted October 23, 2015 Posted October 23, 2015 wow looks like a lot of fun cant wait to try this out is there a playable release yet ?
StarsMmd Posted October 23, 2015 Author Posted October 23, 2015 There isn't a playable version yet. I have a few more changes to make so will need a little more time. I just started uni again a few weeks ago so progress has slowed a little bit but I will try and finish it as soon as possible.
Tux Posted October 23, 2015 Posted October 23, 2015 Nice job ! By the way, how did you implement the "2 starter Pokémon"? Speaking of graphical glitches, there shouldn't be any as of Dolphin 5.0-rc34. I've also figured how scripts work (even though a lot of standard function remain unknown to me); I'll try to release a proof-of-concept disassembler asap.
StarsMmd Posted October 23, 2015 Author Posted October 23, 2015 I found an old AR code that uses the starters from the pokemon demo. They're still programmed into the game so you just change a few bytes in Start.dol and you can use them and you can change a few more bytes to change the actual pokemon themselves. The demo had a jolteon and vaporeon as starters btw. It's really cool that you've figured out the scripts. I figured out how to start testing them but never actually had time to sit down and so the research. Thanks a lot for the work. Can't wait to see the results. Edit: refer to this file -Code/blob/master/Objects/XGDolPatcher.swift'>https://github.com/PekanMmd/Pokemon--Code/blob/master/Objects/XGDolPatcher.swift it's in swift but should be easy enough to fogure out. There's a function called enableBetaStarters
troyz1993 Posted October 24, 2015 Posted October 24, 2015 no probs dude your education is more important, Cant wait for the first release.
Tux Posted October 25, 2015 Posted October 25, 2015 Nice Btw, is your patch based on the NTSC or the PAL version of the game ? About the beta starters, are they the male-only shiny locked ? I think about the ones received through the implementation of the script built-in fuction Party::receieveGiftOrEventPkm(id) (here id could be equal to 1 or 2). Look at 801C9FCC for PAL, otherwise look for the following sequence : 94 21 FF 70 7C 08 02 A6 90 01 00 94 BF 61 00 7C 7C 7B 1B 78 38 60 00 00 38 80 00 02 48 00 6A A5
StarsMmd Posted October 25, 2015 Author Posted October 25, 2015 Nice Btw, is your patch based on the NTSC or the PAL version of the game ? About the beta starters, are they the male-only shiny locked ? I think about the ones received through the implementation of the script built-in fuction Party::receieveGiftOrEventPkm(id) (here id could be equal to 1 or 2). Look at 801C9FCC for PAL, otherwise look for the following sequence : 94 21 FF 70 7C 08 02 A6 90 01 00 94 BF 61 00 7C 7C 7B 1B 78 38 60 00 00 38 80 00 02 48 00 6A A5 it's based on ntsc the us one. I'm not sure if they're shiny locked because I haven't tested it. There's probably a value for their gender but I haven't looked for it. I'll look for the original AR code and see if it has anything about the gender. Edit: They do indeed have a value for the gender. in the pal version its at 0x153FCC for vaporeon and 0x1540F4 for jolteon. These are in RAM btw. I'd recommend doing a ram dump and then looking for the data around those values in start.dol. Replace the 4 bytes at those offsets with 0x3880xxxx, where xxxx is 0000 for male only, 0001 for female only and FFFF for random.
Tux Posted October 25, 2015 Posted October 25, 2015 I have the following hard-coded function, not sure if it is called (after using your AR code): ROM:80154060 # =============== S U B R O U T I N E ======================================= ROM:80154060 ROM:80154060 ROM:80154060 # int __fastcall recieveEventJolteon(void *partyData, __int8 unused) ROM:80154060 recieveEventJolteon: # CODE XREF: scriptRecieveSpecialPkm+60p ROM:80154060 ROM:80154060 .set var_D8, -0xD8 ROM:80154060 .set var_8, -8 ROM:80154060 .set var_4, -4 ROM:80154060 .set arg_4, 4 ROM:80154060 ROM:80154060 stwu r1, -0xE0(r1) ROM:80154064 mflr r0 ROM:80154068 li r4, 2 ROM:8015406C li r5, 0 ROM:80154070 stw r0, 0xE0+arg_4(r1) ROM:80154074 stw r31, 0xE0+var_4(r1) ROM:80154078 stw r30, 0xE0+var_8(r1) ROM:8015407C mr r30, r3 ROM:80154080 bl getPlayerDataField ROM:80154084 mr r0, r3 ROM:80154088 li r3, 0 # baseAddress ROM:8015408C mr r31, r0 ROM:80154090 li r4, 1 # what ROM:80154094 bl getVersionInfo ROM:80154098 mr r6, r3 # versionInfo ROM:8015409C addi r3, r1, 0xE0+var_D8 # pkmData ROM:801540A0 li r4, 0x87 # species ROM:801540A4 li r5, 0x1A # level ROM:801540A8 bl initStdPkmCreation ROM:801540AC addi r3, r1, 0xE0+var_D8 ROM:801540B0 li r4, 0 ROM:801540B4 li r5, 0x62 ROM:801540B8 bl sub_80142A40 ROM:801540BC addi r3, r1, 0xE0+var_D8 ROM:801540C0 li r4, 1 ROM:801540C4 li r5, 0x1C ROM:801540C8 bl sub_80142A40 ROM:801540CC addi r3, r1, 0xE0+var_D8 ROM:801540D0 li r4, 2 ROM:801540D4 li r5, 0x10E ROM:801540D8 bl sub_80142A40 ROM:801540DC addi r3, r1, 0xE0+var_D8 ROM:801540E0 li r4, 3 ROM:801540E4 li r5, 0x54 ROM:801540E8 bl sub_80142A40 ROM:801540EC mr r7, r31 # SIDTID ROM:801540F0 addi r3, r1, 0xE0+var_D8 # pkmData ROM:801540F4 li r4, 0 # wantedGender ROM:801540F8 li r5, -1 # wantedNature ROM:801540FC li r6, 0 # wantedShininess ROM:80154100 bl generatePIDWithConstraints # (Male, any nature, never shiny) ROM:80154104 mr r0, r3 ROM:80154108 addi r3, r1, 0xE0+var_D8 # pkmData ROM:8015410C mr r7, r0 # value ROM:80154110 li r4, 0 # unk ROM:80154114 li r5, 0x6F # action ROM:80154118 li r6, 0 # optVal ROM:8015411C bl setPkmAttribute ROM:80154120 addi r3, r1, 0xE0+var_D8 # pkmData ROM:80154124 li r4, 0 # unk ROM:80154128 li r5, 0x79 # action ROM:8015412C li r6, 0 # optVal ROM:80154130 li r7, 0x4A6F # value ROM:80154134 bl setPkmAttribute ROM:80154138 addi r3, r1, 0xE0+var_D8 # pkmData ROM:8015413C li r4, 0 # unk ROM:80154140 li r5, 0x99 # action ROM:80154144 li r6, 0 # optVal ROM:80154148 li r7, 0xDC # value ROM:8015414C bl setPkmAttribute ROM:80154150 addi r3, r1, 0xE0+var_D8 # pkmData ROM:80154154 bl updateAllPkmStats ROM:80154158 mr r3, r30 ROM:8015415C addi r4, r1, 0xE0+var_D8 ROM:80154160 li r5, 0x259 ROM:80154164 li r6, 4 ROM:80154168 li r7, 0 ROM:8015416C bl sub_8014E820 ROM:80154170 lwz r0, 0xE0+arg_4(r1) ROM:80154174 lwz r31, 0xE0+var_4(r1) ROM:80154178 lwz r30, 0xE0+var_8(r1) ROM:8015417C mtlr r0 ROM:80154180 addi r1, r1, 0xE0 ROM:80154184 blr ROM:80154184 # End of function recieveEventJolteon
StarsMmd Posted October 25, 2015 Author Posted October 25, 2015 I have the following hard-coded function, not sure if it is called (after using your AR code): ROM:80154060 # =============== S U B R O U T I N E ======================================= ROM:80154060 ROM:80154060 ROM:80154060 # int __fastcall recieveEventJolteon(void *partyData, __int8 unused) ROM:80154060 recieveEventJolteon: # CODE XREF: scriptRecieveSpecialPkm+60p ROM:80154060 ROM:80154060 .set var_D8, -0xD8 ROM:80154060 .set var_8, -8 ROM:80154060 .set var_4, -4 ROM:80154060 .set arg_4, 4 ROM:80154060 ROM:80154060 stwu r1, -0xE0(r1) ROM:80154064 mflr r0 ROM:80154068 li r4, 2 ROM:8015406C li r5, 0 ROM:80154070 stw r0, 0xE0+arg_4(r1) ROM:80154074 stw r31, 0xE0+var_4(r1) ROM:80154078 stw r30, 0xE0+var_8(r1) ROM:8015407C mr r30, r3 ROM:80154080 bl getPlayerDataField ROM:80154084 mr r0, r3 ROM:80154088 li r3, 0 # baseAddress ROM:8015408C mr r31, r0 ROM:80154090 li r4, 1 # what ROM:80154094 bl getVersionInfo ROM:80154098 mr r6, r3 # versionInfo ROM:8015409C addi r3, r1, 0xE0+var_D8 # pkmData ROM:801540A0 li r4, 0x87 # species ROM:801540A4 li r5, 0x1A # level ROM:801540A8 bl initStdPkmCreation ROM:801540AC addi r3, r1, 0xE0+var_D8 ROM:801540B0 li r4, 0 ROM:801540B4 li r5, 0x62 ROM:801540B8 bl sub_80142A40 ROM:801540BC addi r3, r1, 0xE0+var_D8 ROM:801540C0 li r4, 1 ROM:801540C4 li r5, 0x1C ROM:801540C8 bl sub_80142A40 ROM:801540CC addi r3, r1, 0xE0+var_D8 ROM:801540D0 li r4, 2 ROM:801540D4 li r5, 0x10E ROM:801540D8 bl sub_80142A40 ROM:801540DC addi r3, r1, 0xE0+var_D8 ROM:801540E0 li r4, 3 ROM:801540E4 li r5, 0x54 ROM:801540E8 bl sub_80142A40 ROM:801540EC mr r7, r31 # SIDTID ROM:801540F0 addi r3, r1, 0xE0+var_D8 # pkmData ROM:801540F4 li r4, 0 # wantedGender ROM:801540F8 li r5, -1 # wantedNature ROM:801540FC li r6, 0 # wantedShininess ROM:80154100 bl generatePIDWithConstraints # (Male, any nature, never shiny) ROM:80154104 mr r0, r3 ROM:80154108 addi r3, r1, 0xE0+var_D8 # pkmData ROM:8015410C mr r7, r0 # value ROM:80154110 li r4, 0 # unk ROM:80154114 li r5, 0x6F # action ROM:80154118 li r6, 0 # optVal ROM:8015411C bl setPkmAttribute ROM:80154120 addi r3, r1, 0xE0+var_D8 # pkmData ROM:80154124 li r4, 0 # unk ROM:80154128 li r5, 0x79 # action ROM:8015412C li r6, 0 # optVal ROM:80154130 li r7, 0x4A6F # value ROM:80154134 bl setPkmAttribute ROM:80154138 addi r3, r1, 0xE0+var_D8 # pkmData ROM:8015413C li r4, 0 # unk ROM:80154140 li r5, 0x99 # action ROM:80154144 li r6, 0 # optVal ROM:80154148 li r7, 0xDC # value ROM:8015414C bl setPkmAttribute ROM:80154150 addi r3, r1, 0xE0+var_D8 # pkmData ROM:80154154 bl updateAllPkmStats ROM:80154158 mr r3, r30 ROM:8015415C addi r4, r1, 0xE0+var_D8 ROM:80154160 li r5, 0x259 ROM:80154164 li r6, 4 ROM:80154168 li r7, 0 ROM:8015416C bl sub_8014E820 ROM:80154170 lwz r0, 0xE0+arg_4(r1) ROM:80154174 lwz r31, 0xE0+var_4(r1) ROM:80154178 lwz r30, 0xE0+var_8(r1) ROM:8015417C mtlr r0 ROM:80154180 addi r1, r1, 0xE0 ROM:80154184 blr ROM:80154184 # End of function recieveEventJolteon That looks like the right asm code. My code is for the us version. You'll need the PAL version I'm presuming. This is the page where you can get lots of useful ar codes. These are the unencrypted ones which are better because you can easily tweak them. http://www.gc-forever.com/forums/viewtopic.php?f=38&t=2149 Search for the code called "Enable Beta Starter Pokemon"
troyz1993 Posted November 19, 2015 Posted November 19, 2015 hi starsmmd hows uni treating you ?, have you made much progress on pokemon XG ?
StarsMmd Posted November 19, 2015 Author Posted November 19, 2015 hi starsmmd hows uni treating you ?, have you made much progress on pokemon XG ? Uni's good thanks. Haven't had as much free time as I'd like though. I made a nice GUI for my hacking which has been really useful but I recently switched over to doing everything programmatically. It required a little bit of set up but it should speed things up considerably.
troyz1993 Posted November 19, 2015 Posted November 19, 2015 good to hear. i cant wait for a release ive been checking the post every other day lol
StarsMmd Posted November 19, 2015 Author Posted November 19, 2015 good to hear. i cant wait for a release ive been checking the post every other day lol I'm glad you're interested. I'll be sure to get it done as soon as possible ??
troyz1993 Posted November 19, 2015 Posted November 19, 2015 no probs, i have been searching for other Pokemon Colosseum and game cube hacks as i completed all of your randomized Colosseum roms but haven't really had any luck
StarsMmd Posted November 19, 2015 Author Posted November 19, 2015 no probs, i have been searching for other Pokemon Colosseum and game cube hacks as i completed all of your randomized Colosseum roms but haven't really had any luck Afaik, I was the first person to successfully reverse engineer the game files to the point that hacks could be possible. I doubt you'll find any thing else right now. However, since I released my research online a couple of people have contacted me saying they were going to work on some hacks of their own. Since I've been working on the gamecube games for a while now, I think XG will be the first major hack of to be released but maybe someone might release something a bit less extensive before then. We'll just have to wait and see.
troyz1993 Posted December 2, 2015 Posted December 2, 2015 i would love to try to make my own randomizer but it looks way to complicated, i have had a little experience changing Pokemon and trainers on the gba roms but thats it.
StarsMmd Posted December 2, 2015 Author Posted December 2, 2015 yeah unfortunately there isn't really an easy way to do it right now but I'll aim to release some patches eventually.
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