The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.


Advertise here

Reply
 
Thread Tools
  #1    
Old May 19th, 2012, 04:26 PM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice

Advertise here

Hacking the Diploma Screen



You may (or may not) be familiar with the Diplomas in Pokémon awarded to you when you complete your regional and National Pokédexes and show them to the Professor.

This tutorial will be all about how to hack the text and the image displayed. This can allow the Diploma to be used for a variety of other things; a cutscene showing a landscape, perhaps a sacred tablet, or just an art poster? Whatever it is, this tutorial just about covers it all.

With this tutorial, you'll be able to go from this:

To this:


Just so you know, this tutorial does include hex editing and a basic knowledge of how to use a Hex Editor, but I will explain things anyway for clarity's sake. Now, onto the tutorial!

You will need:


Before we start, backup your ROM.
Every time you do something relatively big to your ROM, make a copy.
I can't stress this enough.

Anyway, onto Step 1!

Step 1 - Finding our Data



Load up your ROM in Translhextion.
You'll see something like this:


Now, go to the Script tab, and click Open Thingy Table.

Select the firered.tbl you downloaded, and a pop-up box will appear. Click OK, and then check the "Thingy View Active" square in the new window that has appeared.



In order for us to edit the text that is displayed on the diploma, we first need to find the text itself. Using Translhextion, and a loaded Table file, we can search for text within the ROM.

In a FireRed ROM, the diploma says "PLAYER: [player]", and then "This document is issued". as the first few lines. Because it's less common in the ROM, we'll search for "This document is issued".

So, in Translhextion, do the shortcut Alt+F (Mac users, I don't know what the equivalent is, but go into the Search menu, and the click "Find using table") and in the dialogue box that appears, type in "This document is issued".



This will lead you to the offset 0x41b60e. Now, because I find Translhextion a rather...ugly Hex Editor, I'm going to switch to HxD for this part. The only reason why I use Translhextion is because of its Table file support. So if you want to, load your ROM in HxD.

Anyway, in HxD, we're going to need to find the part of the ROM that points to the text that is displayed. We know the text is stored at 0x41b60e, so we need to turn this into a pointer.

To make a pointer, you take the offset, 41b60e, and split it up into bytes (segments of two).

[41] [b6] [0e]

We then switch the first and last bytes.

[0e] [b6] [41]

And then add [08] to tell the game we're pointing to somewhere in the ROM, so our pointer is 0eb64108.

In HxD, we then do the shortcut Ctrl+F (or Search > Find) for 0e b6 41 08. Make sure you select Hex values where it says Text string and just in case, tick "All" for search direction.



This search should bring you to 0x000F50E4. At the beginning of this, at 0x000F50E0, is "98 B6 41 08", which is a pointer to the text "Kanto", as the text just uses either "National" or "Kanto", and special 0x108 uses Kanto. You can replace this pointer with "FF FF FF 08", which points to blank space, as otherwise the word "KANTO" will be plastered on top of your text. Trust me, it doesn't look nice.

Hit save, write down 0x000F50E4 somewhere and then close HxD.

Step 2 - Our own Text


Load your ROM in XSE. Make a script like the following, with the text you wish to display.

Code:
#dynamic 0x800000

#org @string1
Long ago, the titans of old waged war against each other...

The power of Earth clashed with the power of Neptune, leaving only wasteland...
Now, normally, you'd select the text and put it into XSE's Text Adjuster to make it fit perfectly, and not run off the screen, and that's it. We are going to use the Text Adjuster, but we'll have to make some adjustments ourselves afterwards.

So, select your text, cut it (Ctrl+X), open up the Text Adjuster (Ctrl+T), paste the text in the Text Adjuster (Ctrl+V), hit Convert, and then hit Insert.

Now, the Text Adjuster automatically adds "\l"s and "\p"s, however those notations only work on proper textboxes. It would look gltichy on our diploma, so we need to replace all the "\l"s with "\n"s, and all the "\p"s with two "\n"s. Your script should look like this now:

Code:
#dynamic 0x800000

#org @string1
= Long ago, the titans of old waged\nwar against each other...\n\nThe power of Earth clashed with\nthe power of Neptune, leaving\nonly wasteland...
Hit compile, and copy the offset XSE gives you, and paste it in Notepad.
Because I'm using an unedited FireRed ROM, the offset for my text is 0x800000.

Close XSE, and reopen HxD and load your ROM.

Go to the offset we found earlier, and replace the pointer "0E B6 41 08" to the pointer of your script. If you remember from before, we need to split our offset into bytes, switch the first and last, and then add 08. So my string's pointer is "00 00 80 08".

Copy your new pointer, select the "0E B6 41 08" data, right click and press Paste Write, NOT Paste Insert. Paste Insert will increase the size of your ROM and cause all sorts of damage.



Hit save. There's one more piece of text you may want to remove, that is the GAME FREAK signature. If you want to remove it, simply replace the "84 B6 41 08" at 0x000F50F0 to "FF FF FF 08", or change it to a pointer of text if you want to add a signature of your own (you haven't got much space, though.).

Now, save once more and test your ROM. Obviously, you'll need to add a script that has "special 0x108" in it.

Step 3 - Tilemaps and Tilesets



So, we've edited the text, but what about the background? Who even likes Digletts anyway?

It's not like it suits ancient tablets, anyway. So let's change it!

I'm going to be changing it to a small screen I made using the Groudon and Kyogre sprites from Emerald. The image has to be 240 pixels wide by 160 pixels high, no larger. After you've got your image, select an 8x8 square in the top left corner of your canvas, and cut your selection and paste it somewhere else (on a duplicate tile, perhaps). The gap that you've made is going to be the "transparent" tile.

->
Of course, I could remove all the duplicate tiles, but I'm bad at constructing tilemaps, so I'm just going to leave it like this. You need to index your tileset. I'm not going to go in depth on how to index images, as PC is full of them, but basically you need to load your image in IrfanView and decrease the colour depth to 16 colours, with your transparent colour as the first colour in your palette.



Load your ROM in unLZ GBA, and navigate to 258. You should see a miscoloured Torchic, Pikachu, Diglett, etc. This is the Tileset for the diploma background. We need to replace it, so click the Import button and import your new tileset.

Click Write to ROM, and check both Export Image and Automatically fix Pointers. You need to enter a new offset for the Image Offset - you can use FSF to find the exact space, or just use an offset you know is empty. In my case, that's 0x840000.



Click ok, and then ok on the dialogue box that appears. Click "Next" to go to 259, which looks like a garbled mess. It is, in fact, a .raw file, or a tilemap. Click "Raw Dump". Save the .raw with a name of your choice, and then minimize unLZ GBA.

Open up NTME. Go in the File Menu, then click "Open Tileset" and select the image you imported into unLZ GBA. Wait for it to load, and then go into the File Menu again, go to Open Tilemap and select the .raw file you dumped. Wait for it to load.

It will look quite glitchy, but this is normal. In the "Size (Keep Ratio):" dropdown box, select
32x64 and wait for it to load.



Now, the fun part! Reconstruct your tilemap so it looks how you want it to look.



Go into the File Menu, go to Save Tilemap and save it as a .raw.

Reopen unLZ GBA. You should still be on 259, the garbled mess. Go to the File Menu, click "Load RAW..." and select the .raw you just constructed. It should load as a different looking garbled mess. Click Write to ROM, and again check Export Image and Automatically fix Pointers, and change the Image Offset again to an offset you know is empty, or find free space using FSF. I'm going to use the offset 850000. Click ok on the dialogues and close unLZ GBA. Test your ROM again!



Well...we need to do some Palette Editing!

Step 4- Palette Editing


In VBA, go into the Tools menu and open up the Palette Viewer. Open up Notepad next to VBA, and write down the numbers on the top row of colours in the left box in Notepad.

Spoiler:


Once you've got ah few of the number down, split them up into bytes and flip them around.

If the original order is
Code:
57 2F
7C 1F
47 9B
4F D9
53 7C
57 B8
Then it should become:
Code:
2F 57
1F 7C
9B 47 
D9 4F
7C 53
B8 57
Load your ROM in HxD and search for "2F 57 1F 7C 9B 47 D9 4F 7C 53 B8 57", remembering to check "Hex Values" and "All". This will bring you to the offset 0x415954.

Take note of that offset, close HxD, close the Palette Viewer in VBA, and open up APE.

Load your ROM in APE, and check "Load from offset". In the box with two greyed out arrows next to it, type in 00415954 and click "Load".



Now, manually edit the colours in the top section (Actual Palette) to what they're meant to be like (using VBA and the image of your finished image as a reference) and then hit replace.



Close APE, and fire up VBA once more!



Almost perfect! Now, depending on your image, you may have a light background and so the text looks OK. If not, then you can remove that ugly shadow or change the text colour by going into HxD for one last time.

Go to 0x000f50e8, and you'll find the data "04 5A 41 08". As you can tell, this is a pointer. Reverse it, remove the 08, and we get 415A04. Go to that offset, and you'll see "00 02 03 00". You can change the second byte, "02", to "01" to make the text white, "00" to make it transparent (it looks ugly, trust me). Changing it to "03" will make the text the same colour as the shadow - a grey colour. "04" makes it red, "05" makes it orange, and so on. Experiment with that byte until you get a colour you like.

The third byte, "03", controls the shadow's colour. "00" gets rid of the shadow, and the colours pretty much apply the same as above.

You can always edit these colours, but remember that these are also the colours used by the text NPCs use when talking and such, so if you edit the red here it will edit the colour of girls, etc. The location of the palette is 00471DF0, so enter that in APE if you want to change some more stuff.



And that's about it for this tutorial! I hope you've learned something at least. I'd love to see the creative applications of this.

I do have one question for the more advanced hackers out there: how would it be possible to remove the fanfare that plays when this diploma is displayed? It seems to be the only issue, but I assume ASM would be needed to edit the special's script.

Thanks to the amazing Haru~, it's now possible to have multiple "diplomas" - up to 255!

Click this text to read Haru's mini-tutorial.

Bear in mind that basic knowledge of ASM (inserting, compiling, etc.) is needed. If you're unsure, I recommend reading HackMew's Knowledge, a thread in this Tutorial section that explains compiling and inserting asm.
Some notes about the image you're inserting: it needs to be able to fit on a 240x160 area, as that's the size of the GBA's screen. It also has to be indexed, with no more than 16 colours, and be uncompressed. That's about it, really. Thanks for reading! :)
__________________

Last edited by Spherical Ice; April 5th, 2013 at 09:04 AM.
Reply With Quote
  #2    
Old May 21st, 2012, 03:51 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
Great tut...

This would really help a lot of hackers!
Especially ones making remakes of the IV\V generations...
__________________
Reply With Quote
  #3    
Old May 21st, 2012, 09:26 AM
Zilvereyes's Avatar
Zilvereyes
Beginning Trainer
 
Join Date: Mar 2012
Location: Denmark
Age: 33
Gender: Male
Send a message via Skype™ to Zilvereyes
Nice share with lots of usefully info, thanks :-)
__________________
Zilvereyes - Newbie
Hacking: Pokémon Fire Red

[Guides]:
Adding 0x0 - 0x57 Name Header to FireRed - Incomplete (Still working on it though [10-05-2012])
Reply With Quote
  #4    
Old May 21st, 2012, 01:12 PM
Chaos Rush's Avatar
Chaos Rush
im sexy and i know it
 
Join Date: May 2007
Location: Taylor Swift
Gender: Male
Nature: Adamant
I just had an idea: Theoretically, can't we copy the data of the routine of the Pokedex diploma, insert it into free space, then change all the pointers within the data to new data (so that we can use different tilemaps/tilesets/palettes), then call the routine using the callasm command, thus creating extra diplomas? This would allow things like single-image cutscenes without breaking the original diplomas.

In fact, whenever I have time, I'm going to try this idea. It should be as simple as finding when the diploma routine starts and where it ends.
__________________

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
  #5    
Old June 8th, 2012, 06:45 AM
Haru~'s Avatar
Haru~
Can't resist the chubbiness :3
 
Join Date: Mar 2012
Gender: Female
Nature: Modest
Well it took me about 2 hours or so doing this and trying to perfect it.

So here it is! The thingy in the spoiler are routines that allow you to have up to 255 diplomas. That's enough maybe even too much in a hack!
Instructions are included in the spoiler.
Spoiler:

I'LL EXPLAIN EVERYTHING AT THE BOTTOM

I decided to keep the old special and diploma intact. So this is going to be some work you'll be doing!
Now, if you set 0x8002 to something not equal to 0 before you use the special, it will display alternate diplomas from a table.

The .word 0xFFFFFFFF's are pointers to your own table! Up to 256 pointers. (Note that these routines ignore the pointer at position 0x0 in all of your tables!)
I'll provide the compiled ones at the bottom.

The XX XX XX 08 represents the pointer to where you placed the respective routine (+1).

Tilemap/Tileset Related Routines:
Code:
.align 2
.thumb

/*Tilemap (Raw Image) Replacer*/

main:	ldr r0, .VAR_8002
	ldrb r0, [r0]
	cmp r0, #0x0
	bne go_table
	ldr r1, .ORIG_RAW

continue:	mov r0, #0x1
		mov r2, #0x0
		mov r3, #0x0
		bl func
		ldr r4, .NEXT_INT
		bx r4

go_table:	ldr r1, .TABLE_RAWS
		lsl r0, r0, #0x2
		add r1, r1, r0
		ldr r1, [r1]
		b continue

func:		ldr r4, .DO_FNC
		bx r4

.hword 0x0000
.ORIG_RAW:	.word 0x084154E8
.TABLE_RAWS:	.word 0xFFFFFFFF /*Change accordingly; word-aligned*/
.NEXT_INT:	.word 0x080F4CD7
.VAR_8002:	.word 0x020370BC
.DO_FNC:	.word 0x08002041
at 0x080F4CCA, place 00 00 00 4C 20 47 XX XX XX 08 00 00.
Code:
.align 2
.thumb

/*Tileset (Actual Tiles) Replacer*/

main:	ldr r0, .VAR_8002
	ldrb r0, [r0]
	cmp r0, #0x0
	bne go_table
	ldr r1, .ORIG_DIPLOMA

continue:	mov r0, #0x0
		str r0, [sp, #0x0]
		mov r0, #0x1
		ldr r4, .NEXT_INT
		bx r4

go_table:	ldr r1, .TABLE_DIPLOMAS
		lsl r0, r0, #0x2
		add r1, r1, r0
		ldr r1, [r1]
		b continue

.hword 0x0000
.ORIG_DIPLOMA:		.word 0x084147C0
.TABLE_DIPLOMAS:	.word 0xFFFFFFFF /*Change accordingly; word-aligned*/
.NEXT_INT:		.word 0x080F4FD1
.VAR_8002:		.word 0x020370BC
at 0x080F4FC8, place 00 4C 20 47 XX XX XX 08.
Code:
.align 2
.thumb

/*Palette Replacer*/

main:	ldr r1, .VAR_8002
	ldrb r1, [r1]
	cmp r1, #0x0
	bne go_table
	ldr r0, .ORIG_PAL

continue:	mov r1, #0x0
		mov r2, #0x40
		bl func
		ldr r7, .NEXT_INT
		bx r7

go_table:	ldr r0, .TABLE_PALS
		lsl r1, r1, #0x2
		add r0, r0, r1
		ldr r0, [r0]
		b continue

func:		ldr r7, .DO_FNC
		bx r7

.align 2
.ORIG_PAL:	.word 0x08415954
.TABLE_PALS:	.word 0xFFFFFFFF /*Change accordingly; word-aligned*/
.NEXT_INT:	.word 0x080F4FF9
.VAR_8002:	.word 0x020370BC
.DO_FNC:	.word 0x080703ED
at 0x080F4FEE, place 01 49 08 47 00 00 XX XX XX 08.

Text Related Routines:
Code:
.align 2
.thumb

/*Header Text Replacer*/

main:	ldr r5, .VAR_8002
	ldrb r5, [r5]
	cmp r5, #0x0
	bne go_table
	ldr r1, .ORIG_MSG

continue:	add r0, sp, #0xC
		bl func
		ldr r4, .NEXT_INT
		bx r4

go_table:	ldr r1, .LDPTR_0
		ldr r1, [r1]
		b continue

func:		ldr r4, .DO_FNC
		bx r4

.hword 0x0000
.ORIG_MSG:	.word 0x0841B60E
.LDPTR_0:	.word 0x03000F14 /*Loadpointer slot 0x0*/
.NEXT_INT:	.word 0x080F5061
.VAR_8002:	.word 0x020370BC
.DO_FNC:	.word 0x0813CCC9
at 0x080F5058, place 00 4C 20 47 XX XX XX 08.
Code:
.align 2
.thumb

/*Body Text Replacer*/

main:	ldr r1, .VAR_8002
	ldrb r1, [r1]
	cmp r1, #0x0
	bne go_table
	ldr r1, .ORIG_MSG

continue:	add r0, sp, #0xC
		bl func
		ldr r7, .NEXT_INT
		bx r7

go_table:	ldr r1, .LDPTR_1
		ldr r1, [r1]
		b continue

func:		ldr r7, .DO_FNC
		bx r7

.hword 0x0000
.ORIG_MSG:	.word 0x0841B619
.LDPTR_1:	.word 0x03000F18 /*Loadpointer slot 0x1*/
.NEXT_INT:	.word 0x080F5095
.VAR_8002:	.word 0x020370BC
.DO_FNC:	.word 0x0813CCC9
at 0x080F508C, place 00 4F 38 47 XX XX XX 08.
Code:
.align 2
.thumb

/*Signature Text Replacer*/

main:	ldr r0, .VAR_8002
	ldrb r0, [r0]
	cmp r0, #0x0
	bne go_table
	ldr r0, .ORIG_MSG

continue:	str r0, [sp, #0x8]
		mov r0, #0x0
		mov r1, #0x2
		ldr r7, .NEXT_INT
		bx r7

go_table:	ldr r0, .LDPTR_2
		ldr r0, [r0]
		b continue

.hword 0x0000
.ORIG_MSG:	.word 0x0841B684
.LDPTR_2:	.word 0x03000F1C /*Loadpointer slot 0x2*/
.NEXT_INT:	.word 0x080F50C9
.VAR_8002:	.word 0x020370BC
at 0x080F50C0, place 00 4F 38 47 XX XX XX 08.
Code:
.align 2
.thumb

/*Text Properties Replacer*/

main:	ldr r7, .VAR_8002
	ldrb r7, [r7]
	cmp r7, #0x0
	bne go_table
	ldr r6, .ORIG_DATA

continue:	str r6, [sp, #0x0]
		str r5, [sp, #0x4]
		add r0, sp, #0xC
		ldr r7, .NEXT_INT
		bx r7

go_table:	ldr r6, .VAR_8000
		b continue

.align 2
.ORIG_DATA:	.word 0x08415A04
.VAR_8000:	.word 0x020370B8 /*Var 0x8000 and 0x8001*/
.NEXT_INT:	.word 0x080F5081
.VAR_8002:	.word 0x020370BC
at 0x080F5078, place 00 4F 38 47 XX XX XX 08.

Finally:
at 0x080F50D8, place 00 4F 70 BD F0 30 00 03.

Now, here's how it goes:
Before you use special 0x108, if you set 0x8002 to another value other than 0, it will use the alternate diplomas (in terms of images, palettes and texts if desired), else it will show the original diploma.

Now for the text parts:
Before you use special 0x108, if you want to display your own text on the "PLAYER: [player]" part, just do:
Code:
loadpointer 0x0 0xYYYYYYYY
If you want to display your own text on the middle part, just do:
Code:
loadpointer 0x1 0xYYYYYYYY
If you want to display your own text on the "GAMEFREAK" part, just do:
Code:
loadpointer 0x2 0xYYYYYYYY
Remember that you must load something onto those locations (even if it's to 0x08FFFFFF) or else it will cause the game to crash.

Finally, you don't need to change the contents of 0x415A04 because they now depend on vars 0x8000 and 0x8001 (if using the alternate diplomas anyway, the original ones still use 0x415A04). So, if you want to use 00 02 03 00, you'll do:
Code:
setvar 0x8000 0x200
setvar 0x8001 0x3
Or 00 01 00 00:
Code:
setvar 0x8000 0x100
setvar 0x8001 0x0
So here's a full example:
Code:
#dynamic 0x700000

#org @start
lockall
setvar 0x8002 0x1 //Use custom diploma #0 (position 0x1 in table)
setvar 0x8000 0x100 //This produces the same effect
setvar 0x8001 0x0 //like the one on Spherical Ice's tut.
loadpointer 0x0 @HEADER
loadpointer 0x1 @BODY
loadpointer 0x2 @SIG
special 0x108
waitstate
releaseall
end

#org @HEADER
= KYORDON

#org @BODY
= GROUDON and KYOGRE were once best\nbuddies just so you know[.]\n\nBut RAYQUAZA screwed up\neverything[.] Real bad!

#org @SIG
= BRENDAN
The final result:


Using:
Code:
setvar 0x8000 0x800
setvar 0x8001 0x602

Sorry for the bad quality... Stupid JPEG...

Other things to remember:
Your table can have less than 255 pointers.
Also, setting 0x8002 to 0xF43, for example, is the same as setvar 0x8002 0x43.
The table in the Tilemap (RAW) Replacer routine must contain pointers to the RAW images.
The table in the Tileset (Actual Tiles) Replacer routine must contain pointers to your tileset in compressed form (the ones in unLZ).
The table in the Palette Replacer routine must contain pointers to uncompressed palettes.
Like what Spherical Ice said, you still have little room to work with at the SIG ("GAMEFREAK") location.

Final words:
And that's about it. You can now have up to 255 diplomas + the original to use!
The routines are not fully optimized (the ignoring slot 0x0 thingy), so sorry about that.
If you have any problems or experience any bugs with these routines, please tell me (I just started doing ASM about a month ago). I'll get it fixed as soon as possible.

I would like to thank Spherical Ice for the awesome tutorial and Chaos Rush for the idea of multiple diplomas.
Attached Files
File Type: rar Fixed_Compiled_Routines.rar‎ (1.0 KB, 61 views) (Save to Dropbox)

Last edited by Haru~; June 9th, 2012 at 09:53 AM. Reason: HOLY MOLY! The problems were from my part... I apologize... This version should work. Fixed the compiled routines.
Reply With Quote
  #6    
Old June 8th, 2012, 08:35 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
...wow, I definitely didn't expect to see that.

This is so, so cool.

Just a question, would it be possible to remove the fanfare that is played upon activating the special?

In fact, is that even activated with these custom codes?

Regardless, I've linked your amazing work on the first post.

Thanks a load!

Last edited by Spherical Ice; June 8th, 2012 at 08:52 AM.
Reply With Quote
  #7    
Old June 8th, 2012, 09:34 AM
Rokou
» inactive
 
Join Date: Jun 2012
Age: 22
Gender: Male
Nature: Quiet
This is pretty awesome. I'll definitely use that for my project, thanks for sharing!
__________________
Reply With Quote
  #8    
Old June 8th, 2012, 09:45 AM
Masterbrock10
Beginning Trainer
 
Join Date: Apr 2012
Gender: Male
This is Awesome..! Thanks a lot for Sharing Dude! :D :D
Reply With Quote
  #9    
Old June 8th, 2012, 04:05 PM
Haru~'s Avatar
Haru~
Can't resist the chubbiness :3
 
Join Date: Mar 2012
Gender: Female
Nature: Modest
Quote:
Originally Posted by Spherical Ice View Post
...wow, I definitely didn't expect to see that.

This is so, so cool.

Just a question, would it be possible to remove the fanfare that is played upon activating the special?

In fact, is that even activated with these custom codes?

Regardless, I've linked your amazing work on the first post.

Thanks a load!
Unfortunately, it still plays the fanfare as I only hacked the loader in the routines.
Well, if you're using the music loader hack (I think it was from Mastermind_X) you could do:
Code:
setvar 0x5000 0x104
setvar 0x5002 0x0
....
//specials here
....
setvar 0x5000 0x104
setvar 0x5002 0x104
That might do the trick. Let's just hope that the delay comes from the "waitfanfare" of the special.

That's the idea that I have right now. Though I might dig deeper into the code.

P.S. Does it fully work? Because I made the bug corrections on my testing ROM without updating the ones on my notepad so errors may happen. If there is, please tell me.

EDIT: It seems that I'm having trouble with the routines. I will fix it soon. Problem Fix'd!

Last edited by Haru~; June 9th, 2012 at 12:45 AM.
Reply With Quote
  #11    
Old June 9th, 2012, 02:50 AM
Haru~'s Avatar
Haru~
Can't resist the chubbiness :3
 
Join Date: Mar 2012
Gender: Female
Nature: Modest
Yup, that's the one.

Though even if you mute the sound effect, it will still have that delay (waiting for the original song to finish). But it's a step forward.
Reply With Quote
  #12    
Old June 9th, 2012, 05:28 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
Well, I've tried inserting the custom diplomas using the .bin files you attached, and for some reason, the text displays properly, but for the image, it just displays a black screen. Also, after pressing A and "exiting" the diploma screen, the screen goes black, the music continues but nothing else can be done. I'm almost 100% sure I inserted it as you said, so I'm quite curious as to why this is happening.

The standard diploma works as usual.
Reply With Quote
  #13    
Old June 9th, 2012, 05:48 AM
Haru~'s Avatar
Haru~
Can't resist the chubbiness :3
 
Join Date: Mar 2012
Gender: Female
Nature: Modest
Quote:
Originally Posted by Spherical Ice View Post
Well, I've tried inserting the custom diplomas using the .bin files you attached, and for some reason, the text displays properly, but for the image, it just displays a black screen. Also, after pressing A and "exiting" the diploma screen, the screen goes black, the music continues but nothing else can be done. I'm almost 100% sure I inserted it as you said, so I'm quite curious as to why this is happening.

The standard diploma works as usual.
Yes, I have encountered that problem when I'm trying to replicate it on another ROM. But I have already fixed those problems. (I found out that my tileset data and raw image data were swapped causing that black screen as you said and literally staying black). Well, can you try this patch of the hack? (On a clean Fire Red ROM. Just talk to the May sprite).

Spoiler:
Code:
Data:
0x870000 - Tileset Table
0x870400 - Raw Image Table
0x870800 - Palette Table


EDIT: Oh, I forgot to tell you that the black screen is caused by the Tileset and RAW Image routines' positions getting swapped.
Wait! The names of the routines in the RAR file are wrong!
The "Diploma_Tilemap_Replacer.bin" is the RAW Image Replacer and the "Diploma_Raw_Replacer.bin" is the Tileset Image Replacer! <- RAR File has been fixed, see attachment.
Attached Files
File Type: rar Test_Diploma_Hack.rar‎ (127.6 KB, 41 views) (Save to Dropbox)

Last edited by Haru~; June 9th, 2012 at 08:44 AM. Reason: I'm such a mess right now...
Reply With Quote
  #14    
Old June 14th, 2012, 02:51 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
I can honestly say I've always wondered what that image in unLZ was. However, that's can be very useful if hooked into some assembly. It wouldn't be hard to make it load another text or image based on a variable or loadpointer command.
__________________



Reply With Quote
  #15    
Old June 15th, 2012, 08:59 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
Um, I'm pretty sure that's exactly what Haru has done lol.
Reply With Quote
  #16    
Old August 10th, 2012, 07:38 PM
redriders180's Avatar
redriders180
Mastermind of Pokemon Glazed
 
Join Date: Jun 2010
Location: Path of Victory, Tunod
Gender: Male
Nature: Quirky
Send a message via AIM to redriders180 Send a message via Skype™ to redriders180
I think what would be the ultimate icing on the cake would be to figure out how to make this special not automatically end a script. There are plenty of times I want to display images, for whatever reason, and want a script to continue onwards. Does anyone have any idea how to make that work?
__________________

Thank you for hatching the eggs!
Please view these dragons! Just click them and you're done!
If you don't help them grow up, they'll die...



Reply With Quote
  #17    
Old August 10th, 2012, 08:38 PM
NarutoActor's Avatar
NarutoActor
The rocks cry out to me
Community Supporter
 
Join Date: Jan 2009
Location: Brooklyn/Marlboro
Age: 20
Gender: Female
Nature: Bashful
Send a message via AIM to NarutoActor Send a message via Windows Live Messenger to NarutoActor
Um I haven't tried this before, but isn't callasm2 used for such a thing? Then you can place a return after the script. Not 100% sure, I herd this, but like I said, I could be wrong. (Please verify)
__________________
~There are those people who understand hex, F the rest
Reply With Quote
  #18    
Old May 13th, 2013, 08:04 AM
Dafting
 
Join Date: Feb 2013
Gender: Male
This is AMAZING. WAAAAAAAAAAAAAY AMAZING.

I want to play a song, not a fanfare during the "Diploma SlideShow". How can i do that?
Reply With Quote
  #19    
Old May 13th, 2013, 10:56 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
Quote:
Originally Posted by Dafting View Post
This is AMAZING. WAAAAAAAAAAAAAY AMAZING.

I want to play a song, not a fanfare during the "Diploma SlideShow". How can i do that?
I've actually posted a thread in R&D on the ability to change what music/fanfare is played when the diploma is shown.
__________________
Reply With Quote
  #20    
Old May 14th, 2013, 07:39 AM
Dafting
 
Join Date: Feb 2013
Gender: Male
Quote:
Originally Posted by Spherical Ice View Post
I've actually posted a thread in R&D on the ability to change what music/fanfare is played when the diploma is shown.
Well, i didn't found that part you said, i'm sorry. Maybe deleting that fanfare, or moving it. I dunno.
Reply With Quote
  #21    
Old September 7th, 2013, 06:20 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
Would it be within the realm of possibility to do this using 256 colours? I don't think it would be, but it'd be interesting to see.
__________________
Reply With Quote
  #22    
Old December 24th, 2013, 04:37 PM
poke529's Avatar
poke529
 
Join Date: Feb 2011
Gender: Male
I don't know if it's just me, but could you possibly upload the firered tbl again? Sendspace said Sorry, the file you requested is not available.
Reply With Quote
  #23    
Old February 1st, 2014, 11:03 AM
Spherical Ice's Avatar
Spherical Ice
Community Supporter
 
Join Date: Nov 2007
Location: UK
Send a message via Skype™ to Spherical Ice
Quote:
Originally Posted by poke529 View Post
I don't know if it's just me, but could you possibly upload the firered tbl again? Sendspace said Sorry, the file you requested is not available.
https://www.dropbox.com/s/4xckrkpf4g6fax8/table.tbl
__________________
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
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:15 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.