Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.

#101
April 7th, 2012 (6:42 PM).
 NintendoBoyDX Join Date: Jul 2010 Gender: Male Posts: 94
This is way more complicated than it needs to be... 080440F4 is the shiny decision routine. Go to 0804411E and replace it with 00 20. This is the spot that it checks whether the value is greater or less than 7. Replacing that will make the value always 00 right before the check, and that means all pokemon will be shiny. Much easier to replace 2 bytes.

just throwin that out there

#102
April 10th, 2012 (5:56 PM).
 YouListeningROMs Join Date: Mar 2012 Gender: Male Posts: 24
With ASM, how would you do modulo?
#103
April 10th, 2012 (10:39 PM).
 NintendoBoyDX Join Date: Jul 2010 Gender: Male Posts: 94
Quote:
 Originally Posted by YouListeningROMs With ASM, how would you do modulo?
There are a couple of ways in fr. There is software interrupt 0x6, which is a bios function call that does division and modulo. There is routine 081E4018 developed by gamefreak, that does division and modulo as well.

R0 = dividend
R1 = divisor

returning
R0 = quotient
R1 = modulo answer

081E4684 is another routine made by gamefreak that does modulo only.

A few other math routines:
081E460C: another division routine
081E3B9C: square root, calls swi 0x8

I've stumbled across a few others that I dont remember..
#104
April 11th, 2012 (3:57 AM).
 YouListeningROMs Join Date: Mar 2012 Gender: Male Posts: 24
Quote:
 Originally Posted by NintendoBoyDX There are a couple of ways in fr. There is software interrupt 0x6, which is a bios function call that does division and modulo. There is routine 081E4018 developed by gamefreak, that does division and modulo as well. R0 = dividend R1 = divisor returning R0 = quotient R1 = modulo answer 081E4684 is another routine made by gamefreak that does modulo only. A few other math routines: 081E460C: another division routine 081E3B9C: square root, calls swi 0x8 I've stumbled across a few others that I dont remember..
Thank you for your assistance.
#105
November 13th, 2012 (8:07 AM).
 truekidmoney Join Date: Apr 2011 Gender: Male Posts: 3
Hey guys i have a question how do i get the results lesson1.bin this:
03 B5 03 48 00 68 03 49 80 89 08 80 03 BD C0 46
0C 50 00 03 D0 70 03 02
into my rom?
#106
November 13th, 2012 (8:13 AM).
 hashtag Join Date: Nov 2008 Location: Salisbury, England Age: 22 Gender: Male Nature: Sassy Posts: 9,517
Use a Hex Editor and insert the bytes into free space ending with a 0, 4, 8 or C.
__________________
#107
November 30th, 2012 (7:55 AM).
 CallarinCreator Join Date: Sep 2012 Gender: Male Posts: 5
kan u post something on xse? it aint wantin to work for me. it will work. but it shuts down after like a second.
__________________
iiiiiiii uummm.... i scared.

house of EVIL!!! muhuahahahahhahahaha!!!!!!!!!
#108
November 30th, 2012 (9:27 AM).
 Deokishisu Mr. Magius Join Date: Feb 2006 Location: If I'm online, it's a safe bet I'm at a computer. Gender: Male Nature: Relaxed Posts: 813
Quote:
 Originally Posted by CallarinCreator kan u post something on xse? it aint wantin to work for me. it will work. but it shuts down after like a second.
O poor English, struck down in its prime.

Anyway, this is because of the auto update feature. Since Hackmew's site is down, it tries to update, fails, and closes. To fix it, go into your .ini file and change it so that the AutoUpdateCheck equals zero.

So that line should look like this:
AutoUpdateCheck=0
#109
January 30th, 2013 (4:52 PM).
 GoGoJJTech (☞ﾟヮﾟ)☞ http://GoGoJJTech.com ☜(ﾟヮﾟ☜) Join Date: Nov 2012 Location: Earth Age: 18 Gender: Female Nature: Jolly Posts: 2,477
These are extremely helpful ( and long ) well great job hackmew
__________________
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Youtube Channel

Support me at my site!
Pokémon Platinum Red and Blue
#110
February 3rd, 2013 (12:37 AM).
 Chaos Rush im sexy and i know it Join Date: May 2007 Location: Taylor Swift Gender: Male Nature: Adamant Posts: 1,296
I decided to take a crack at HackMew's ASM challenge, and I succeeded!

This is what I modified the routine to:
Code:
```.text
.align 2
.thumb
.thumb_func
.global lesson1

main:
push {r0-r1, lr}
ldr r0, .PLAYER_DATA
ldr r0, [r0]
ldr r1, .VAR
ldrh r0, [r0, #0xC]
strh r0, [r1]
ldr r0, .PLAYER_DATA
ldr r0, [r0]
ldr r1, .NEXT
ldrh r0, [r0, #0xA]
strh r0, [r1]
pop {r0-r1, pc}

.align 2
.PLAYER_DATA:
.word 0x0300500C
.VAR:
.word 0x020270B6 + (0x800D * 2)
.NEXT:
.word 0x020270B8 + (0x8000 * 2)```
And the XSE script:
Code:
```#dynamic 0x800000
#org @main
callasm YourASMoffset
buffernumber 0x0 LASTRESULT
buffernumber 0x1 0x8000
msgbox @msg MSG_FACE
end

#org @msg
= Your Trainer ID is [buffer2].\nYour Secret ID is [buffer1].```
Going to do my best to get ASM down...
__________________

My projects:
Untitled Pokémon fangame (pictured above) | Final Fantasy II NES retranslation | Mother 1/EarthBound Beginnings Color Restoration for GBA
Non-Pokémon hacks I support:
Sonic Classic Heroes
Sonic 3 Complete
#111
February 3rd, 2013 (6:46 AM).
 FBI Free supporter Join Date: Jan 2013 Location: Unknown Island Gender: Male Posts: 1,692
Quote:
 Originally Posted by Chaos Rush I decided to take a crack at HackMew's ASM challenge, and I succeeded! Spoiler: This is what I modified the routine to: Code: ```.text .align 2 .thumb .thumb_func .global lesson1 main: push {r0-r1, lr} ldr r0, .PLAYER_DATA ldr r0, [r0] ldr r1, .VAR ldrh r0, [r0, #0xC] strh r0, [r1] ldr r0, .PLAYER_DATA ldr r0, [r0] ldr r1, .NEXT ldrh r0, [r0, #0xA] strh r0, [r1] pop {r0-r1, pc} .align 2 .PLAYER_DATA: .word 0x0300500C .VAR: .word 0x020270B6 + (0x800D * 2) .NEXT: .word 0x020270B8 + (0x8000 * 2)``` And the XSE script: Code: ```#dynamic 0x800000 #org @main callasm YourASMoffset buffernumber 0x0 LASTRESULT buffernumber 0x1 0x8000 msgbox @msg MSG_FACE end #org @msg = Your Trainer ID is [buffer2].\nYour Secret ID is [buffer1].``` Going to do my best to get ASM down...
Spoiler tags, pls!
Also, you don't need to load player data twice.
It should till work without doing this the second time:
ldr r0, .PLAYER_DATA
ldr r0, [r0]

EDIT: I lied, the way you did it, you did need to load it twice (or subtract :D).
__________________
...
#112
February 9th, 2013 (8:22 PM). Edited February 11th, 2013 by karatekid552.
 karatekid552 What happens if I push it?.... Join Date: Nov 2012 Location: Do you really want to know? Really? Gender: Male Nature: Bold Posts: 1,766
Almost all of the reference links for the ASM tutorial are broken. I have found a few of them, would it be alright for me to post them here? Or should I pm them to DrFuji/giradalkia to add to the end of the tut?

Edit: only two are broken.... Wow, I remember that being a lot more last time....

Edit2: I guess since no one has objected it is fine for me to post the links here:

Assembly Wikipedia: (So easy to find it really wasn't broken, but whatever) http://en.wikipedia.org/wiki/Assembly_language

ARM7DTMI Technical Manuel: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0210c/DDI0210B.pdf

Tonic: Whirlwind Tour of ARM Assembly: http://www.coranac.com/tonc/text/asm.htm

Hope these help anyone who wants to learn ASM.
__________________

Paired with Simba
#113
May 17th, 2013 (10:12 AM). Edited May 17th, 2013 by Kurapika.
 Kurapika Grudgebearer Join Date: Feb 2013 Location: Lavendar Town - Morocco Gender: Male Nature: Naughty Posts: 406
Since I see people asking questions here, I have a problem using ldr with cmp. I am making a code that compares two words, one located in the RAM and the other located in the ROM. so what I do:
Spoiler:
ldr r1, .word1 ldr r1, [r1] ldr r2, .word2 ldr r2, [r2] cmp r1, r2 beq YayTheyEqualz ...
The problem is, the jump never occurs even when the words are equal... So I tried this:
Spoiler:
ldr r1, .word1 ldrh r1, [r1] ldr r2, .word2 ldrh r2, [r2] cmp r1, r2 beq SecondHalf ... SecondHalf: ldr r1, .word1 ldr r1, [r1, #0x2] ldr r2, .word2 ldrh r2, [r2, #0x2] cmp r1, r2 beq YayTheyEqualz ...
And this 2nd code works correctly but takes more space and it is more complicated. So, I'm wondering if ldr and/or cmr commands have some particular behaviour that makes the first code not working??? Or am I just doing something wrong?
__________________
#114
May 17th, 2013 (3:30 PM).
 karatekid552 What happens if I push it?.... Join Date: Nov 2012 Location: Do you really want to know? Really? Gender: Male Nature: Bold Posts: 1,766
Quote:
 Originally Posted by Kurapika Since I see people asking questions here, I have a problem using ldr with cmp. I am making a code that compares two words, one located in the RAM and the other located in the ROM. so what I do: Spoiler: ldr r1, .word1 ldr r1, [r1] ldr r2, .word2 ldr r2, [r2] cmp r1, r2 beq YayTheyEqualz ... The problem is, the jump never occurs even when the words are equal... So I tried this: Spoiler: ldr r1, .word1 ldrh r1, [r1] ldr r2, .word2 ldrh r2, [r2] cmp r1, r2 beq SecondHalf ... SecondHalf: ldr r1, .word1 ldr r1, [r1, #0x2] ldr r2, .word2 ldrh r2, [r2, #0x2] cmp r1, r2 beq YayTheyEqualz ... And this 2nd code works correctly but takes more space and it is more complicated. So, I'm wondering if ldr and/or cmr commands have some particular behaviour that makes the first code not working??? Or am I just doing something wrong?
Would you mind giving us all of the ASM in the regular format? It is really tough the read this way.
__________________

Paired with Simba
#115
May 17th, 2013 (4:31 PM).
 Kurapika Grudgebearer Join Date: Feb 2013 Location: Lavendar Town - Morocco Gender: Male Nature: Naughty Posts: 406
code 1: code 2: The first one doesn't jump to TheyAreEqualz even when it should, the second code works perfectly for me. (Sorry, for some reason, line skips are removed from my posts ;_; I think it's just my ****** Internet -.-')
__________________
#116
May 17th, 2013 (6:00 PM).
 karatekid552 What happens if I push it?.... Join Date: Nov 2012 Location: Do you really want to know? Really? Gender: Male Nature: Bold Posts: 1,766
Quote:
 Originally Posted by Kurapika code 1: code 2: The first one doesn't jump to TheyAreEqualz even when it should, the second code works perfectly for me. (Sorry, for some reason, line skips are removed from my posts ;_; I think it's just my ****** Internet -.-')
From looking at your code, both routines are loading different things. Parts are loading words and others are loading half-words and neither lines up with the other routine. That is probably where your problem lies. A word is 4 bytes and a half-word is 2 bytes. Take that as you wish.
__________________

Paired with Simba
#117
October 4th, 2013 (8:38 AM).
 Kurapika Grudgebearer Join Date: Feb 2013 Location: Lavendar Town - Morocco Gender: Male Nature: Naughty Posts: 406
Spoiler:
.word 0x020270B6 + (0x800D * 2)
Assigns the word (32 bits) 0x020270B6 + (0x800D * 2) = 0x020370D0 to .VAR. If you're wondering about the "weird" format, I made that to make it easier changing the variable used. Note however this would work only for temporary variables, 0x800D onwards. For the previous temporary variables, just increase the main address by 2 (in the example above, you would change it to .word 0x020270B8 + (0x8000 * 2), if you were to use variable 0x8000).

But does this way work for any other variables other than the 0x8000 family?
__________________
#118
October 4th, 2013 (9:22 AM).
 karatekid552 What happens if I push it?.... Join Date: Nov 2012 Location: Do you really want to know? Really? Gender: Male Nature: Bold Posts: 1,766
Quote:
 Originally Posted by Kurapika Spoiler: .word 0x020270B6 + (0x800D * 2) Assigns the word (32 bits) 0x020270B6 + (0x800D * 2) = 0x020370D0 to .VAR. If you're wondering about the "weird" format, I made that to make it easier changing the variable used. Note however this would work only for temporary variables, 0x800D onwards. For the previous temporary variables, just increase the main address by 2 (in the example above, you would change it to .word 0x020270B8 + (0x8000 * 2), if you were to use variable 0x8000). But does this way work for any other variables other than the 0x8000 family?
The others are DMA protected. Check my battle bg changer to see how to check vars of others. There is an in-game decrypter function.
__________________

Paired with Simba
#119
October 4th, 2013 (9:57 AM).
 Kurapika Grudgebearer Join Date: Feb 2013 Location: Lavendar Town - Morocco Gender: Male Nature: Naughty Posts: 406
Oh damn!
I'll check your tutorial, thank you bro!
__________________
#120
December 2nd, 2014 (8:03 AM). Edited December 2nd, 2014 by Christos.
 Lance32497 LanceKoijer of Pokemon_Addicts Join Date: Aug 2014 Location: Criscanto town-Ginoa Region xD Gender: Male Nature: Adamant Posts: 793
I got the error 'thumb' not recognized as an internal blah blah
#121
December 2nd, 2014 (1:47 PM).
 FBI Free supporter Join Date: Jan 2013 Location: Unknown Island Gender: Male Posts: 1,692
Quote:
 Originally Posted by Lance32497 I got the error 'thumb' not recognized as an internal blah blah
You need to navigate in the command prompt to the directory containing "thumb.bat" and the rest of those files. From what it looks, you're trying to run it from a directory which doesn't have it.

I would move all the files into 1 folder and do:
cd path\To\File
thumb source.asm compiled.bin

Next time:
__________________
...
#122
June 11th, 2015 (6:31 AM).
 FamiliaWerneck Join Date: May 2015 Location: São Paulo, Brasil Gender: Male Posts: 271
So I have tried using the palette editing tutorial together with APE.
I did change the palettes of the National Pokédex, but I failed as for the right ones.
The broken images in OP could really be of help here.
Instead of changing that "green" frame of the National Pokédex for the brown one from the Regional Pokédex, I changed the background of the Pokédex to red and brown (and I didn't even use red while editting palettes...)
I opened the palettes, just like HackMew's tutorial said to, and I changed every green color for brown colors (only colors that were already in the palette) and this happened.
Help?
#123
December 26th, 2016 (3:15 PM). Edited December 26th, 2016 by xRyanp92x.
 xRyanp92x Join Date: Dec 2015 Gender: Male Nature: Relaxed Posts: 13
whenever i try to assemble the asm it doesnt work i just keep getting this... idk why it wont work anyone have any ideas?

Spoiler:

Edit: ok nvm i figured it out :D

Spoiler:
Attached Images
 2016-12-25 6-58-51 PM.png‎ (7.7 KB, 46 views) (Save to Dropbox) 2016-12-25 7-28-44 PM.png‎ (2.9 KB, 45 views) (Save to Dropbox)
#124
December 28th, 2016 (5:43 PM).
 Shitik Supah Hott Join Date: Apr 2013 Location: Personal Gender: Male Nature: Mild Posts: 106
It helped me a lot. Thanks, HackMew (if you're even still around)!

 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 [icon] codes HTML code is Off Forum Rules
 Forum Jump Dashboard Private Messages Subscriptions Who's Online Search Forums Forums Home Pokémon: Main Series Games     Pokémon Sun & Pokémon Moon         Alola Travel Diaries     Sixth Generation     Fifth Generation     Fourth Generation     Third Generation     Second Generation     First Generation Pokémon: Play Together     Battling & Team Building         VGC         Events & Groups Approval         The PokéCommunity League     Trade Corner         Trader Reviews         Trade Shops     Challenges         Challenge Logs Pokémon: General Discussions     Pokémon General     Pokémon Gaming Central     Pokémon Anime         Episode Discussion     Pokémon GO         Pokémon Field Journals     Pokémon Trading Card Game         TCG Deck Reviewing         Custom Cards     Pokémon Trivia Fan Games     Fan Games Hub     ROM Hacking         Launchpad         Research & Development         Tools, Tutorials & Resources     ROM Hacks Studio         Progressing ROM Hacks         Sideshow Showcase     PokéCommunity ROM Hack         Applications         Planning     Custom Game Development         Resources         Scripts & Tutorials         Pokémon Essentials     Custom Games Showcase         Progressing Games Create & Discover     Art & Design         A&D School of the Arts     Roleplay Theatre         Roleplay Casting         Roleplay Stage     Fan Fiction and Writing         Writer's Lounge         Fanfiction Archive     PokéCommunity Daily         Published Piece Archive Community Square     The Bulletin Board     Feedback & Support     Meet & Greet Entertainment & Media     Video Games     Entertainment & Media     Anime & Manga Off Topic Discussions     Off-Topic     Lifestyle & Health     Science & Technology     A New Leaf     Discussions & Debates     Forum Games     The Underground

All times are GMT -8. The time now is 6:20 AM.