The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!
Research & Development programs in this forum are subject to moderator approval before they are displayed.


Reply
Click here to go to the first staff post in this thread.  
Thread Tools
  #276    
Old November 10th, 2012, 03:09 PM
Sagiri
 
Join Date: Mar 2007
Age: 20
Okay, I know this isn't exactly what this thread is for, but whatever.

What I've been working on for the past few hours is a rewrite of the stone evolution checking routine. It, essentially, makes it much easier to add custom (stone) evolution methods. If this is unclear, essentially you could write a code to check just for gender (or really, whatever you wanted), put it somewhere, and put that pointer into a table, and it would allow you to evolve using a particular stone on a particular gender of Pokemon. It uses the evolution types above 'F' (as in, all the unused ones).

Right now, I'm doing stone evolutions, though I plan to work on doing the same for levelup and trade evolutions eventually.

What I was wondering, though, is - would it even be worth it to even release it once I finish working out the bugs? Sure, it makes it easier to implement custom evolution methods, but you still need to know ASM to even use it, and, so, the only people that would be able to even use it could do the exact same thing.
Reply With Quote
  #277    
Old November 26th, 2012, 01:18 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Ok, I found this over at the pokahacking forum and it seems to be useful for legendary events! So I did not discovered this credits to Steven and Casta for some Info about this.

So ever wanted to make your game like a movie or something like that. xD Well you can you can now make something look like this.



So how to do it huh? Pretty easy just put this in your script.

Ruby:
Quote:
writebytetooffset 0x6C 0x4000044
writebytetooffset 0x23 0x4000045
Fire red:
Quote:
writebytetooffset 0x80 0x4000044
writebytetooffset 0x20 0x4000045
Emerald:
Quote:
writebytetooffset 0x7F 0x4000044
writebytetooffset 0x20 0x4000045
Just include them in every script that you want it only goes away after a warp to another place. That's all. :D

Credits:
Steven
Casta
__________________
Reply With Quote
  #278    
Old November 27th, 2012, 01:40 AM
PokemonMasters's Avatar
PokemonMasters
Always Remember Forever&After
 
Join Date: Jun 2012
Location: Nuvema Town, Unova
Gender: Male
Nature: Calm
You can also use this for trailers and stuff. :D
__________________

+ForeverDash on PC's Battle Server | Pair | VM/PM |Partner In Crime
Reply With Quote
  #279    
Old November 27th, 2012, 01:43 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by PokemonMasters View Post
You can also use this for trailers and stuff. :D
Yes and cutscenes as well including flashbacks and it would be awesome! :D
__________________
Reply With Quote
  #280    
Old November 27th, 2012, 02:00 AM
PokemonMasters's Avatar
PokemonMasters
Always Remember Forever&After
 
Join Date: Jun 2012
Location: Nuvema Town, Unova
Gender: Male
Nature: Calm
btw, does this have bugs?
__________________

+ForeverDash on PC's Battle Server | Pair | VM/PM |Partner In Crime
Reply With Quote
  #281    
Old November 27th, 2012, 02:43 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by PokemonMasters View Post
btw, does this have bugs?
As far as I know none. It only goes away after you warp.
__________________
Reply With Quote
  #282    
Old November 30th, 2012, 10:38 PM
Team Fail's Avatar
Team Fail
A Little Bit Of Sparkle
Community Supporter
 
Join Date: May 2009
Age: 19
Gender: Male
Nature: Brave
So today I discovered how to convert MIDI files to .SSEQ using official SDK tools. This was a test for modulation, however it seems the music file is broken. I presume it may be from when the music file was exported, though.



Attached is the MIDI, the text version of it, and the resulting SSEQ from the video above. Just like GBA Music hacking, ladies and gentlemen.

I also ripped this from the executable to convert this wall of text into the SSEQ. IT'S ALL THE COMMANDS! :D

Edit: After about a day of work, I made my own totally custom .SDAT.
Attached Files
File Type: zip conversion process.zip‎ (39.4 KB, 7 views) (Save to Dropbox)
__________________

Pairs:
Kevin, Echidna
Follow me on Twitter! @TeamFail
Alt 1, リザードン
Miiverse
Pokémon Hackers Online
Alt 2: Jack Cayman



[04:20.39] <@GoGo> I WILL INSERT WITH PLEASURE
[04:20.45] <@GoGo> shut it Bela

[05:41.55] <Team_Fail> Blue Spider is interesting, but #MEHMasterRace
[05:42.20] <diegoisawesome> Team_Fail: Sounds like a bunch of unmotivated people that still want to try to take over the world

Last edited by Team Fail; December 1st, 2012 at 11:02 PM.
Reply With Quote
  #283    
Old December 7th, 2012, 04:38 PM
Shiny Quagsire's Avatar
Shiny Quagsire
Unexpectedly Gone until Aug 13
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Quote:
Originally Posted by tajaros View Post
Ok, I found this over at the pokahacking forum and it seems to be useful for legendary events! So I did not discovered this credits to Steven and Casta for some Info about this.

So ever wanted to make your game like a movie or something like that. xD Well you can you can now make something look like this.



...
I actually found the other half of this that changes things to greyscale without doing any division or other crazy ASM. It's one RAM location:
Code:
0x02036E28
So just wrote a 0x1 to that offset for greyscale, and 0x2 for sepia (I think...). To reset, set it to 0x0.
__________________



Reply With Quote
  #284    
Old December 7th, 2012, 06:26 PM
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter Tier 2
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 22
Gender: Male
Nature: Modest
hinkage messaged me about possibly removing the introduction part of the New Game function in FireRed. It was surprisingly easy. Pretty much entailed nulling some function calls and replacing one pointer.

Code:
0812ED1E: 00 00 00 00
0812ED2E: 00 00 00 00
0812EE3E: 00 00 00 00
0812EE48: 00 00 00 00
0812EE4E: 00 00 00 00
0812EE54: 00 00 00 00
0812EE60: 00 00 00 00
0812EE8C: D1 08 13 08
There's a small delay, though. I'm currently unsure about how to fix it.

EDIT: Nevermind. It only works if there is already a save file, for some reason.
__________________
あなた は しきしゃ です
わたし は ばか です

Last edited by Darthatron; December 7th, 2012 at 07:03 PM.
Reply With Quote
  #285    
Old December 8th, 2012, 01:32 AM
Iacobus's Avatar
Iacobus
sǝɯɐɾ
 
Join Date: Dec 2003
Location: Belgium
Age: 22
Gender: Male
Quote:
Originally Posted by Darthatron View Post
EDIT: Nevermind. It only works if there is already a save file, for some reason.
You have to write a function that writes a temporary player and rival name to the right location. Then it will work, trust me The game tries to load those.
__________________
Reply With Quote
  #286    
Old December 18th, 2012, 07:35 AM
InMooseWeTrust's Avatar
InMooseWeTrust
Jack of All Trades
 
Join Date: Jul 2007
Location: Lansdale, Pennsylvania, USA
Age: 22
Gender: Male
Nature: Careful
Send a message via ICQ to InMooseWeTrust Send a message via AIM to InMooseWeTrust Send a message via Windows Live Messenger to InMooseWeTrust Send a message via Yahoo to InMooseWeTrust Send a message via Skype™ to InMooseWeTrust
Is there a way to hack an unused ability (like Cacophony) into Snow Warning? Drought, Drizzle and Sand Stream are already in 3rd gen but I'd like to have the option in Fire Red for a Hail team in the same way.
__________________
Pokémon: Battles of the Past
Site Thread
Black2 FC: 5072 6059 9635
Reply With Quote
  #287    
Old December 24th, 2012, 12:47 PM
Agastya's Avatar
Agastya
Grinding failed. Item Grind level dropped by 3.
 
Join Date: Feb 2010
Nature: Quiet
em swarms @0x58D094
species - 2
movepool - 8
level - 1 (i think)
map - 1 (i think, based on first map bank)

assuming this is correct, these are the swarms in this data block
Seedot Lv3, Route 102: Bide, Harden, Leech Seed
Nuzleaf Lv15, Route 115: Harden, Growth, Nature Power, Leech Seed
Seedot Lv13, Route 117: Harden, Growth, Nature Power, Leech Seed
Seedot Lv25, Route 120: Giga Drain, Frustration, Solarbeam, Leech Seed
Skitty Lv13, Route 116: Growl, Tackle, Tail Whip, Attract

they primarily have egg moves and they're primarily just seedot so idk
they really dont seem that special and theyre completely off from what other sites say so maybe theres another block of swarm data somewhere
__________________
Reply With Quote
  #288    
Old January 22nd, 2013, 03:01 PM
Shiny Quagsire's Avatar
Shiny Quagsire
Unexpectedly Gone until Aug 13
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
The address at 0x030008c9 is a step counter that increases by three for each step. Just something I found while searching the RAM.
__________________



Reply With Quote
  #289    
Old January 24th, 2013, 07:37 PM
SSJ4 Furanki's Avatar
SSJ4 Furanki
Got my Zoroark and everything!
 
Join Date: Jul 2006
Age: 21
Nature: Hasty
Is there a way to delete your rival from the naming process at the beginning of the game in FireRed?
__________________
Hacks I'm currently working on:
DarkCopper (Only at 1st Gym Area)

My X/Y Team:

Reply With Quote
  #290    
Old January 24th, 2013, 08:19 PM
Quickster's Avatar
Quickster
Dream or Drop?
 
Join Date: Oct 2007
Gender: Male
Nature: Quiet
Quote:
Originally Posted by SSJ4 Furanki View Post
Is there a way to delete your rival from the naming process at the beginning of the game in FireRed?
Hey, I figured Id link you to this page.

http://www.thepkmnworld.co.uk/v5/for...ce-centre.396/

If you look at the naming rival from overworld section, Im sure you could learn something as Jambo removes it, Im pretty sure at least.
__________________
I laugh looking at this.

But sometimes I want to come back to it...

Reply With Quote
  #291    
Old January 24th, 2013, 11:08 PM
robin22gongon's Avatar
robin22gongon
 
Join Date: Sep 2012
Location: Want to know? VM me.
Age: 16
Gender: Male
Nature: Quirky
Send a message via Windows Live Messenger to robin22gongon
Quote:
Originally Posted by Quickster View Post
Hey, I figured Id link you to this page.

http://www.thepkmnworld.co.uk/v5/for...ce-centre.396/

If you look at the naming rival from overworld section, Im sure you could learn something as Jambo removes it, Im pretty sure at least.
Uh... Could you just copy the thing written on your link and paste it here cause that site isn't available in my country?
Reply With Quote
  #292    
Old January 24th, 2013, 11:41 PM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by robin22gongon View Post
Uh... Could you just copy the thing written on your link and paste it here cause that site isn't available in my country?
Here..

Naming the Rival from the Overworld:
Spoiler:
The Code:
Code:
.text
.align 2
.thumb
.thumb_func
.global rivalnamingingame
main:
push {r0-r4,lr}
ldr r0, place
str r0, [sp, #0x4]
ldr r1, ramlocation
ldr r1, [r1, #0x0]
ldr r0, standard
add r1, r1, r0
mov r0, #0x4
mov r2, #0x0
mov r3, #0x0
bl place2
ldr r1, ramlocation
ldr r1, [r1, #0x0]
ldr r0, standard
add r1, r1, r0
ldrb r0, [r1, #0x0]
cmp r0, #0xFF
beq failsafe
cmp r0, #0x0
beq failsafe
return: pop {r0-r4}
pop {pc}
place2: ldr r4, actualroutine
bx r4
failsafe: ldr r0, rivalname
loop: ldrb r2, [r0, #0x0]
strb r2, [r1, #0x0]
cmp r2, #0xFF
beq return
add r0, #0x1
add r1, #0x1
b loop
.align
place: .word 0x080568E1
ramlocation: .word 0x03005008
standard: .word 0x00003A4C
actualroutine: .word 0x0809D955
rivalname: .word 0x08FFFFFF
Where to insert: Anywhere! This routine is called from a script in the game, and as such, doesn't need to be carefully linked into existing routines. All you need to do is remember the rule of THUMB, add 1 to the offset when calling it!

Explanation: It's what it says on the tin, it lets you name your rival from the in game overworld, allowing for Silver like naming, or indeed, any other possibility you can come up with. The rivalname: .word 0x08FFFFFF is for if the player leaves the name box blank. It will fill it with a standard name instead. This standard name is up to you to create. Simply compile a name with XSE, and point that pointer to it.

You also need to put this routine in the game, or else it won't be able to load past the intro without naming the rival. All it does is temporarily write a holding name to the rival buffer so that the game doesn't crash.

Code:
.text
.align 2
.thumb
.thumb_func
.global rivalnamingskip
main:
ldr r1, [r6, #0x0]
ldr r0, number
mov r8, r0
add r1, r8
push {r1}
ldr r0, rivalname
loop: ldrb r2, [r0, #0x0]
cmp r2, #0xFF
beq end
strb r2, [r1, #0x0]
add r0, #0x1
add r1, #0x1
b loop
end: strb r2, [r1, #0x0]
pop {r1}
mov r0, sp
ldr r3, return
bx r3
.align
number: .word 0x00003A4C
rivalname: .word 0x08FFFFFF
return: .word 0x08054A75
Where to insert: Navigate to 0x54A6A, and change the following bytes to this:
01 49 08 47 00 00 XX XX XX 08.
Where the XX's stand for the pointer to the new routine plus 1.

Explanation: It simply writes a placeholder name into the [rival] buffer so the game doesn't crash. Obviously, you shouldn't be using the [rival] buffer until the player has named the rival, so it shouldn't be a problem.

To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.
__________________
Reply With Quote
  #293    
Old January 25th, 2013, 11:17 AM
wwmb's Avatar
wwmb
Watcher
 
Join Date: Apr 2010
Gender: Male
Quote:
Originally Posted by Midnight Bear View Post
Okay, I know this isn't exactly what this thread is for, but whatever.

What I've been working on for the past few hours is a rewrite of the stone evolution checking routine. It, essentially, makes it much easier to add custom (stone) evolution methods. If this is unclear, essentially you could write a code to check just for gender (or really, whatever you wanted), put it somewhere, and put that pointer into a table, and it would allow you to evolve using a particular stone on a particular gender of Pokemon. It uses the evolution types above 'F' (as in, all the unused ones).

Right now, I'm doing stone evolutions, though I plan to work on doing the same for levelup and trade evolutions eventually.

What I was wondering, though, is - would it even be worth it to even release it once I finish working out the bugs? Sure, it makes it easier to implement custom evolution methods, but you still need to know ASM to even use it, and, so, the only people that would be able to even use it could do the exact same thing.
I think that you should. And just because someone can do something... doesn't mean they would want to go through all the work of designing such a system, ironing out bugs, building it and so on.
Reply With Quote
  #294    
Old January 25th, 2013, 02:18 PM
Shiny Quagsire's Avatar
Shiny Quagsire
Unexpectedly Gone until Aug 13
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
Quote:
Originally Posted by tajaros View Post
To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.
__________________



Reply With Quote
  #295    
Old January 25th, 2013, 02:30 PM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by shiny quagsire View Post
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.
It's like that in Jambo's post so I'm not sure if that is the pointer.
__________________
Reply With Quote
  #296    
Old January 27th, 2013, 11:35 PM
interdpth
I've seen things, man.
 
Join Date: Jul 2004
Are camera addresses known? If so is there already hack that presents the 3D Pokemon games in First Person mode?
__________________
yes, this is doge.

potato is not here.

bye
Reply With Quote
  #297    
Old January 29th, 2013, 12:54 PM
wwmb's Avatar
wwmb
Watcher
 
Join Date: Apr 2010
Gender: Male
POKEMON EMERALD
I found something kind of wacky when I was messing with strings:

//---------------
#org @start
msgbox @msg 0x2
end

//---------
// Strings
//---------
#org @msg
= \hF9

This seems to:
Repeat last speech from last triggered script/person
It is also, always, missing the first 2 characters of the repeated text. (ie, talking to the person who says "PROF. BIRCH spends days in his LAB [blablabla]" will repeat "OF. BIRCH spends days in his LAB [blablabla]")


Probably useless. but still funny.
Reply With Quote
  #298    
Old January 29th, 2013, 04:45 PM
FBI agent
Imagine something beautiful
 
Join Date: Jan 2013
Location: Isle 4 - Dairy Products
Gender: Male
Quote:
Originally Posted by Jambo51 View Post
So, last night, I worked out how type effectiveness is done in FireRed. You'll be pleased to know that it's relatively simple. Firstly, the method of storage:

Code:
[Attack type - 1 byte][Target Type - 1 Byte][Effectiveness value - 1 Byte]
This data is stored at 0x24F050.

There are several of these, kept in an array which ends with a 0xFE value. The game loops over each entry in the array, checking if the attack type matches the used attack's type, and if it does, then checks the Target Type against the 2 types of the targeted Pokémon.

If either type matches, it loads the effectiveness byte and branches off to another routine which takes care of physically making the attack super effective/not effective. The type effectiveness values are as follows:

Code:
Note, these are in hex
00 - Has No effect (Eg, Ghost on Normal)
05 - 50% effectiveness
14 - 200% Effectiveness
I don't know why they used these values, but that's what they are nonetheless. What you may gleam from these values, however, is that, unless explicitly told otherwise, the game treats all moves as normal effectiveness on any type.

If neither type matches, it jumps to the loop counter, increments it and continues checking until it hits that magical 0xFE value.

However, the way it is implemented leaves something to be desired as it is very slow (looping over several entries), and taking up more space than needed, both in terms of code and data. It's obviously wasteful in so far as it continues to check even after having already found both effectiveness values, as well as the wasteful nature of the loop in and of itself.
Related thread:
http://www.pokecommunity.com/showthread.php?t=83674
__________________
...

Hacks I support:
http://www.pokecommunity.com/showthread.php?t=297199 --Legend of Anbuja
http://www.pokecommunity.com/showthread.php?t=200227 -- Pokemon Rose version

People whom I thank:
Comrade -- For helping me with my bad hack, and for being a good friend
Darthatron -- Helping me get into basic ASM, even though I'm hopeless. (He is heartless stay away).
Anbuja's_BlooDY -- Graphics help, and being a good friend
FBI -- For having the username I wanted
Reply With Quote
  #299    
Old January 30th, 2013, 12:23 AM
Chaos Rush's Avatar
Chaos Rush
im sexy and i know it
 
Join Date: May 2007
Location: Taylor Swift
Gender: Male
Nature: Adamant
Here are some offsets for the Pokedex HUD:
0x451F55 = X position of text list
0x451F56 = Y position of text list
0x451F5D = X position of Habitat picture
0x451F5E = Y position of Habitat picture
0x451F65 = X position of "Seen:__ Owned:__" box
0x451F66 = Y position of "Seen:__ Owned:__" box
0x451F61 = BG Palette number that habitat picture uses
0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

Mess around with the bytes at those offsets, allowing you to do stuff like this:
__________________

The Chaos Emerald ROM Base (it's gonna take awhile)

DS-style 64x64 Pokémon Sprite Resource NOW COMPLETED
Custom Sugimori-style Pokémon Sprite Resource IN PROGRESS


Non-Pokémon hacks I support:
Sonic Classic Heroes
Sonic 3 Complete
Reply With Quote
  #300    
Old February 3rd, 2013, 01:35 PM
karatekid552's Avatar
karatekid552
What happens if I push it?....
 
Join Date: Nov 2012
Location: Do you really want to know? Really?
Gender: Male
Nature: Bold
Send a message via AIM to karatekid552 Send a message via Windows Live Messenger to karatekid552 Send a message via Skype™ to karatekid552
Just some research on high #flags.

I have always used flags in the 1000's for my hacking, until tajaros showed me this post: http://www.pokecommunity.com/showthr...56#post6829256

In it, it states that flags above 900 overwrite variables from 4000 up. I have never had a problem with flags in the 1000's so I did some investigating.

I wrote a script that would set all of the flags from 900 to 11FF and then did some variable comparing. I checked variables 4000 to 4380 (the var that flag 1000 should affect, if this was true, since flags are 1 byte while vars are 2) and I found that only vars 4000-408F were affected. Nothing higher. I even checked a few variables like 5000, 4400, and 4500, all to receive that same result. None higher than 408F were affected.

This brings me to my question. Why? I know that flags 900 to A22 are completely off limits by the above research, but what about the rest? Where are they stored? Either vars 4090+ are stored in a non-DMA location or the flags above A22 aren't stored with the rest. Does anyone know anything about these high number flags?
__________________

Paired with Simba
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 09:04 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.