News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - caminopreacher

Pages: [1] 2 3 4 5 6 7
1
They will both be updated on this site soon.
The ips files are in the description of the videos if you don't want to wait.

Water Blue Hack

https://www.youtube.com/watch?v=DcMIbLknObk&t=2s

Fire Red Legends

https://www.youtube.com/watch?v=BpeO3y0-8gs&t=35s

2
Personal Projects / Re: Pokemon Water Blue Release
« on: March 09, 2020, 11:51:10 am »
Hey! You got the title screen working! Awesome.

Right?! Finally! :beer:

Still couldn't get the black outline for Blue"s intro sprite, but everything else is good to go! Be sure to look around for surprise battles. Check back in Berry Forest after the League too...

3
Personal Projects / Re: Pokemon Water Blue Release
« on: March 08, 2020, 11:25:14 pm »
There is no Readme included with this hack, since one of the stated goals say "Similar to Fire Red Legends, all Gen 1 and 2 pokemon, including legendaries are available without cheating or trading.", so am I able to use your Readme from your other hack "Pokemon Fire Red Legends" as a pokemon locations guide? Or will there there differences?

TL;DR: Are Pokemon locations that have been altered same or different between "Fire Red Legends" and "Water Blue"?


Sorry for the late reply. Yes, They basically have the same catch rate and pokemon appearances. I have just submitted an update to deal with a glitch with the Dome and Helix fossils, as well as some other level issues with certain pokemon. But, basically, yes, with a few exceptions, it is the same as Legends. :)

4
Personal Projects / Pokemon Water Blue Release
« on: February 29, 2020, 10:33:54 pm »
Hello all!

My Pokemon Water Blue hack has been submitted and will be released shortly.

https://www.youtube.com/watch?v=4l24XfGFcQk

5
Personal Projects / Fire Red Rival Variation Hack and Battle
« on: February 15, 2020, 10:45:02 pm »
https://www.youtube.com/watch?v=KuTVZ_4OLak



Hello, all!
This is a preview of a series of hacks I've been working on that will be released soon. I use my "Fire Red Legends" hack as a base (link below).
These hacks mix up the protagonists and antagonists, respectfully.
Fire Red Legends- Red vs Blue (as usual).
Green Rival- Red vs Green/Leaf
Red Rival- Green/Leaf vs Red
Water Blue- Blue vs Red

Depending on which starter you choose will determine if your rival's roster resembles that of their game or manga counterpart (esample: Red has Charmander in the game, but Bulbasaur in the Manga. Blue has Squirtle in the game, but Chamander in the Manga. Green/Leaf has Squirtle in the Manga).

As it is, the only thing left to fix is the Fire Red Logo on the Water Blue Title screen, and the Intro Sprite for Blue. Beyond that, everything else is done.

There is also a special team up at the end of Water Blue as well.

Download Link below. Contains IPS files for each of the 4 hacks. Apply only of each to a clean Fire Red VERSION 1.0 Rom, rename the .gba and .ips files the same name and enjoy!

http://www.mediafire.com/file/2ut6a74eo7r6xg7/Pokemon_Rival_variations.rar/file


6
ROM Hacking Discussion / Pokemon Fire Red Trainer Battle Sprite Issue
« on: January 24, 2020, 04:41:26 pm »
Hello All! Took a break from hacking, but wanted to test something.
I'm trying to insert a custom trainer sprite with NSE and Irfanview.
 In Irfanview, I've resized the image, decreased color depth to 16. The image inserts in NSE, and loads fine, but the colors are still off.l...
I know the first color of the palette is transparent (background), but how do I keep that color from being included when editing the image in irfanview? I've looked at tutorials, youtube and I've posted on pokecommunity and discord.
Thoughts? Thanks so much.

7
ROM Hacking Discussion / Re: Harmony of Dissonance palette issue
« on: January 03, 2020, 03:41:17 pm »
Two main approaches.

1) Edit the sprite itself. Depending what mode you are in you may have a bunch of empty slots in the palette (or things you can possibly crush down). Change the sprite itself to refer to these once blank or now redundant colours and alter the colours within the palette itself if necessary. Assuming you have the space within the palette this should dodge most of the memory issues.
2) Repoint. At some point the game will figure out to load the palette into the palette section. Find this read and point it somewhere else, might have to repeat for the things that ordinarily use that palette. Sometimes it will be calculated, other times it will be of the form 08?????? (or one of the mirrors possibly) directly in the ROM somewhere*.

*not going to even say it is likely to work but as it is a fairly quick thing you might as well. Find the palette in the ROM (dump it from RAM and search the ROM for it, or a fragment of it). If you know where it is in the ROM you can then search for that as a pointer (most GBA games tend to operate with the 08000000 through 09FFFFFF region, which in practice means 08000000 through 08FFFFFF as most ROMs are below 16 megs, hence the GBA pointers always start with 08 line you might have heard, even if it is technically wrong) and maybe change that (or figure out which pointer might be your one if there are multiple) and go from there. If you are going to have to do assembly style tracing to find how the pointer gets created/read then the first part might still save you some time rather than watching it first get loaded into palette memory and going from there.

Thanks much! I will definitely try that out!

8
ROM Hacking Discussion / Harmony of Dissonance palette issue
« on: January 03, 2020, 01:59:53 pm »
Hello all. I just have a few little things I'm finally getting around to in my HOD hacks.

I notice that Juste's character palette shares a palette with blood and hearts. Can I repoint his character palette to some free space to have different colors? (My belnades hack has his coat, blood and hearts all dark blue and I want them separated.) Thanks much!

9
Personal Projects / Re: Castlevania Circle of the Moon Dialogue
« on: December 16, 2019, 04:54:52 pm »
About 9 years ago, me and some friends translated this game to brazilian portuguese. For the text part, we developed a dumper / inserter in python based on MetroID, another dumper / inserter for Metroid Zero Mission.

Here's the source code:

Code: [Select]
#! /usr/bin/env python
# -*- coding: iso-8859-1 -*-

#MetroID: [GBA]Metroid Zero Mission Dumper Inserter
#Copyright (C) 2007 Trans-Center, Odin
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

try: import psyco
except ImportError: pass
import sys
# POG é vida!
class CCOTMDI:
    def __init__(self, filename):
        self.rom_file = open(filename, "r+b")
        self.pointer_addresses = [0x670C64, 0x671163, 0x67084C, 0x670B8B]
        self.invert_three = lambda offset: ((offset << 16)|((offset & 0x00FF00))|(offset >> 16)) & 0xFFFFFF
        self.invert_table = lambda table: dict([[v,k] for k,v in table.items()])
        # Preguiça de codar um módulo para tabelas :)
        self.table = {0x09: "<QL>\n", 0x02: "<QS>\n", 0x0B: "<VRMLH>",
0x00: "<FIM>\n\n", 0x5C: "<SETAESQ>", 0x5D: "<SETACIMA>",
0x5E: "<SETABAIXO>", 0x5B: "<SETADIR>",
0x26: " ", 0x27: "_", 0x3E: "A", 0x4D: "B",
0x44: "C", 0x45: "D", 0x4E: "E", 0x56: "F",
0x4F: "G", 0x40: "H", 0x43: "I", 0x6B: "J",
0x5F: "L", 0x42: "M", 0x52: "N", 0x67: "O",
0x4B: "P", 0x3B: "Q", 0x46: "R", 0x41: "S",
0x47: "T", 0x60: "U", 0x6E: "V", 0x6D: "X",
0x6F: "Z", 0x29: "a", 0x3C: "b", 0x33: "c",
0x32: "d", 0x28: "e", 0x3A: "f", 0x39: "g",
0x31: "h", 0x2D: "i", 0x62: "j", 0x3D: "k",
0x30: "l", 0x36: "m", 0x2E: "n", 0x2B: "o",
0x38: "p", 0x61: "q", 0x2C: "r", 0x2F: "s",
0x2A: "t", 0x34: "u", 0x3F: "v", 0x37: "w",
0x57: "x", 0x65: "z", 0x64: "0", 0x6A: "1",
0x63: "2", 0x6C: "3", 0x71: "4", 0x69: "5",
0x72: "8", 0x35: ".", 0x4C: ",", 0x50: "+",
0x51: "'", 0x48: "?", 0x4A: "!", 0x68: "%",
0x70: "/", 0x73: "&", 0x54: "(", 0x55: ")",
0x58: "-", 0x59: "[", 0x5A: "]", 0x79: "á",
0x7A: "à", 0x7B: "ã", 0x7C: "â", 0x7D: "é",
0x87: "ê", 0x9A: "í", 0x9B: "ó", 0xA5: "õ",
0xAE: "ô", 0xAF: "ú", 0xCD: "ç", 0x66: "Á",
0x49: "É", 0x53: "Í"}
    def __readed_to_int(self, readed):
        """Bytes lidos para inteiros."""
        integer = 0
        for x in readed: integer = (integer << 8) | ord(x)
        return integer
    def __buffering_pointers(self):
        """Armazena ponteiros."""
        pointers_block_1, pointers_block_2 = [], []
        # Armazenando endereços do primeiro bloco
        self.rom_file.seek(self.pointer_addresses[0], 0)
        while self.rom_file.tell() <= self.pointer_addresses[1]:
            pointer = self.invert_three(self.__readed_to_int(self.rom_file.read(3)))
            pointers_block_1.append(pointer)
            self.rom_file.seek(1, 1)
        # Armazenando endereços do segundo bloco
        self.rom_file.seek(self.pointer_addresses[2], 0)
        while self.rom_file.tell() <= self.pointer_addresses[3]:
            pointer = self.invert_three(self.__readed_to_int(self.rom_file.read(3)))
            pointers_block_2.append(pointer)
            self.rom_file.seek(1, 1)
        return pointers_block_1, pointers_block_2
    def extract(self):
        """Extrai o texto da ROM."""
        text_addresses_1, text_addresses_2 = self.__buffering_pointers()
        script_file_1 = open("script_1.txt", "w+b")
        script_file_2 = open("script_2.txt", "w+b")
        # Escreve o Script 1
        for x in range(len(text_addresses_1)):
            self.rom_file.seek(text_addresses_1[x], 0)
            while True:
                bytes = self.__readed_to_int(self.rom_file.read(1))
                if self.table.has_key(bytes) and bytes != 0x0000: script_file_1.write(self.table[bytes])
                elif bytes == 0x0000:
                    script_file_1.write(self.table[bytes])
                    break
                else: script_file_1.write("<$" + hex(bytes) + ">")
        # Escreve o Script 2
        for x in range(len(text_addresses_2)):
            self.rom_file.seek(text_addresses_2[x], 0)
            while True:
                bytes = self.__readed_to_int(self.rom_file.read(1))
                if self.table.has_key(bytes) and bytes != 0x0000: script_file_2.write(self.table[bytes])
                elif bytes == 0x0000:
                    script_file_2.write(self.table[bytes])
                    break
                else: script_file_2.write("<$" + hex(bytes) + ">")       
        raw_input("\t* Extração concluída.\n\t  Pressione qualquer tecla para sair.")
        script_file_1.close()
        script_file_2.close()
    def insert(self, insertion_address = 0x700000): # Função Megazord
        """Insere o texto de volta na ROM."""
        self.rom_file.seek(insertion_address, 0)
        new_pointers_1, new_pointers_2 = [], []
        new_pointers_1.append(self.invert_three(self.rom_file.tell()))
        inverted_table = self.invert_table(self.table)
        try:
            script_file_1 = open("script_1.txt", "rb")
            script_file_2 = open("script_2.txt", "rb")
        except IOError:
            raw_input("\t* Arquivo de script não encontrado.\n\t  Pressione qualquer tecla para sair.")
            sys.exit()
        # Inserindo o texto do primeiro script de volta na ROM
        while True:
            byte = script_file_1.read(1)
            # Tratamento das tags
            if byte == "<":
                tag_string = ""
                while True:
                    tag_byte = script_file_1.read(1)
                    if tag_byte != ">":
                        tag_string += tag_byte
                        continue
                    elif tag_string[0] == "$":
                        self.rom_file.write(chr(int(tag_string[1:], 16) & 0xFF))
                        break
                    elif tag_string == "QL":
                        self.rom_file.write(chr(0x09))
                        break
                    elif tag_string == "QS":
                        self.rom_file.write(chr(0x02))
                        break
                    elif tag_string == "FIM":
                        self.rom_file.write(chr(0x00))
                        new_pointers_1.append(self.invert_three(self.rom_file.tell()))
                        break
                    elif tag_string == "VRMLH":
                        self.rom_file.write(chr(0x0B))
                        break
                    elif tag_string == "SETAESQ":
                        self.rom_file.write(chr(0x5C))
                        break
                    elif tag_string == "SETADIR":
                        self.rom_file.write(chr(0x5B))
                        break
                    elif tag_string == "SETACIMA":
                        self.rom_file.write(chr(0x5D))
                        break
                    elif tag_string == "SETABAIXO":
                        self.rom_file.write(chr(0x5E))
                        break
                    else:
                        raw_input("\t* Houve um erro com uma tag.\n\t  Pressione qualquer tecla para sair.")
                        sys.exit()
            # Tratamento dos caracteres
            elif inverted_table.has_key(byte):
                self.rom_file.write(chr(inverted_table[byte] & 0xFF))
                continue
            if not byte: break
        # Inserindo o texto do segundo script de volta na ROM
        new_pointers_2.append(new_pointers_1.pop())
        while True:
            byte = script_file_2.read(1)
            # Tratamento das tags
            if byte == "<":
                tag_string = ""
                while True:
                    tag_byte = script_file_2.read(1)
                    if tag_byte != ">":
                        tag_string += tag_byte
                        continue
                    elif tag_string[0] == "$":
                        self.rom_file.write(chr(int(tag_string[1:], 16) & 0xFF))
                        break
                    elif tag_string == "QL":
                        self.rom_file.write(chr(0x09))
                        break
                    elif tag_string == "QS":
                        self.rom_file.write(chr(0x02))
                        break
                    elif tag_string == "FIM":
                        self.rom_file.write(chr(0x00))
                        new_pointers_2.append(self.invert_three(self.rom_file.tell()))
                        break
                    elif tag_string == "VRMLH":
                        self.rom_file.write(chr(0x0B))
                        break
                    elif tag_string == "SETAESQ":
                        self.rom_file.write(chr(0x5C))
                        break
                    elif tag_string == "SETADIR":
                        self.rom_file.write(chr(0x5B))
                        break
                    elif tag_string == "SETACIMA":
                        self.rom_file.write(chr(0x5D))
                        break
                    elif tag_string == "SETABAIXO":
                        self.rom_file.write(chr(0x5E))
                        break
                    else:
                        raw_input("\t* Houve um erro com uma tag.\n\t  Pressione qualquer tecla para sair.")
                        sys.exit()
        # Tratamento dos caracteres
            elif inverted_table.has_key(byte):
                self.rom_file.write(chr(inverted_table[byte] & 0xFF))
                continue
            if not byte: break
        new_pointers_2.pop()
        # Atualização dos ponteiros
        self.rom_file.seek(self.pointer_addresses[0])
        for x in range(len(new_pointers_1)):
            self.rom_file.write(chr(new_pointers_1[x] >> 16))
            self.rom_file.write(chr(new_pointers_1[x] >> 8 & 0xFF))
            self.rom_file.write(chr(new_pointers_1[x] & 0xFF))
            self.rom_file.seek(1, 1)
        self.rom_file.seek(self.pointer_addresses[2])
        for y in range(len(new_pointers_2)):
            self.rom_file.write(chr(new_pointers_2[y] >> 16))
            self.rom_file.write(chr(new_pointers_2[y] >> 8 & 0xFF))
            self.rom_file.write(chr(new_pointers_2[y] & 0xFF))
            self.rom_file.seek(1, 1)
        raw_input("\t* Inserção dos textos concluída.\n\t  Pressione qualquer tecla para sair.")
        script_file_1.close()
        script_file_2.close()

if __name__ == "__main__":
    print """\t+===============================+
        |\tCCotM DI 0.1\t\t|\n\t|\tTrans-Center, 2010\t|\n\t|\tSolid_One\t\t|
        +===============================+"""
    while True:
        filename = raw_input(">>> Arquivo [GBA]Castlevania Circle of the Moon: ")
        if filename == "": filename = "[GBA]Castlevania Circle of the Moon.gba"
        try:
            action = CCOTMDI(filename)
            while True:
                print ">>> Escolha opção:\n\t1. Extrair Texto(Via Ponteiros)\n\t2. Inserir Texto\n\t3. Sair do Programa"
                task = raw_input(">>> Sua opção: ")
                if task.isdigit() == True: task = int(task)
                if task < 1 or task > 3: print "\t* Inválido..."
                elif task == 1:
                    action.extract()
                    break
                elif task == 2:
                    action.insert()
                    break
                else:
                    sys.exit()
            break
        except IOError:
            print "\t* Arquivo %s não encontrado." % filename
            continue

And here's some instructions to make it work:

Dumping scripts
1. Copy and paste all contents in the code tag above, and save it into a file named "ccotm_di.py";
2. Copy the original american Circle of the Moon rom into the same folder of the file above (it should have crc32 1cc059a4). Preferrably, rename it to "ccotm.gba";
3. Install Python interpreters into your computer. Preferrably, grab any 2.7.x version, since I don't know for sure if it'll work on Python 3;
4. Run it on terminal with "python ccotm_di.py";
5. Type the name of the original Circle of the Moon rom ("ccotm.gba", according to step 2) and press Enter;
6. Choose option 1 in order to extract all game texts into two script files (script_1.txt and script_2.txt);

Inserting scripts back
1. Edit your script files as you wish;
2. Run the tool again on terminal with "python ccotm_di.py";
3. Type the name of the original Circle of the Moon rom ("ccotm.gba", according to step 2 in the "Dumping scripts" section above) and press Enter;
4. Choose option 2 in order to insert back the game texts from the script files into the rom. It'll insert them into an area with lots of empty space in the end of the rom, and it'll automatically update all text pointers for you.


The code tag below shows what you should see on both steps above:

Code: [Select]
+===============================+
        | CCotM DI 0.1 |
| Trans-Center, 2010 |
| Solid_One |
        +===============================+
>>> Arquivo [GBA]Castlevania Circle of the Moon: CCOTM.gba
>>> Escolha opção:
1. Extrair Texto(Via Ponteiros)
2. Inserir Texto
3. Sair do Programa
>>> Sua opção:

And that's it. Hope it helps.

Awesome! Thanks! :beer:

December 16, 2019, 04:57:12 pm - (Auto Merged - Double Posts are not allowed before 7 days.)

DSVania Editor won't support CotM as the creator has no plans to bring said support to the program sadly.



There are quite a few of us still waiting for a CotM editor so you're not alone :P

Glad I'm not the only one... Still rewriting 2 of the 3 gba vanias isn't bad. And since COTM has the least amount of story and is non-canon, I guess it can wait. I'm still mad we couldn't play as Hugh though. Did you see the Aria of Sorrow Hugh Baldwin hack?

10
Personal Projects / Castlevania Circle of the Moon Dialogue
« on: December 15, 2019, 10:22:39 pm »
Hello all.
Would anyone know if there is a way to edit Circle of the Moon's dialogue? The DSVania Editor tool doesn't work. I have a conversion table, but it doesn't seem to be working either. Any ideas? Thanks!

12
Personal Projects / Re: Pokemon Water Blue Hack Release
« on: November 13, 2019, 11:06:19 am »
Awesome!
And yes, I'm done for now. I've got more pressing things I have to deal with, but I wanted to post what I have. Really, the only thing I wasn't able to complete was the Water Blue title screen and fix the Intro sprite outline of Blue. Let me know what you think when you finish it!


And here's the older hack

http://www.romhacking.net/hacks/4670/

14
ROM Hacking Discussion / Fire Red Title Screen Sprite Editing
« on: October 29, 2019, 01:52:57 pm »
Has anyone messed with the title screen logo and sprites for fire red? I did it a few months ago, and it worked fine, but the file got deleted. Upon trying to replicate it, nothing changes. Not sure why, because I did exactly what I did earlier. This is the guide I followed. Any ideas? (posed on pokecommunity and discord already).

https://www.instructables.com/id/Edit-GBA-Pok%C3%A9mon-Title-Screen-Sprite/

15
Personal Projects / Fire Red Legends Update
« on: October 21, 2019, 09:53:39 pm »
Hello all,
My Fire Red Legends Hack has been updated and will be updated soon. However, whereas the first version was Fire Red 1.1, the second version only works with 1. (Squirrels, Vanilla, etc...) This way, those who want to cheat can do so. I was unaware that 1.1 didn't allow for cheating the same way as the original.

Additionally,  New Pokemon encounter rates have been edited and new custom trainer battles with familiar faces have been added.  :beer:
Thanks to all who have downloaded and enjoyed so far. Keep a lookout for Patch Version 1.2.


https://www.romhacking.net/hacks/4670/

16
Help Wanted Ads / Water Blue Hack request
« on: October 17, 2019, 03:28:57 pm »
Hello all,
I have completed my "Water Blue" hack of Pokemon Fire Red. It is a sprite swap of Red and Blue where you play as your rival. It is built from my Fire Red Legends hack, so you don't have to trade and you can get all pokemon in gens 1 and 2 in game.
However, I do have a request before I post it, I know how to do tilesets, and can replace Charizard with Blastoise on the title screen, but I'm not very good at doing sprites from scratch. Does anyone know where I can get a "Water Blue Version" graphic or bubbles to replace the flames on the title screen?

17
ROM Hacking Discussion / Decrease national dex to 250 fire red hack
« on: October 13, 2019, 10:58:14 pm »
Hello all, is there a way to adjust prof oak's script using xse to have the national pokedex completed at 250? I'm doing a hack that only focuses on gens 1 and 2.
And once completed, can I insert a trainer battle with prof oak? (I've already made a battle with him a separate encounter, just wanted to give a bit more of a reward than wroooaaaaarrr!!

18
Programming / Re: Pokemon Fire Red Rival name change within the game?
« on: October 08, 2019, 07:31:19 pm »
Ok, 2 questions: The first. How do I change the dialogue in the hex editor and keep the game from crashing? I don't want to add more, I just want to edit what is there. I don't know what to fill the empty space with... I tried 00, but the game won't even launch then.

Second question: If I want to get a trainer I made in advance map to disappear after I beat them in battle and speak to them (like giovanni does), how should I write that in XSE? I looked up Giovanni's encounter, and found the fade screen, hide sprite, fade screen, so, I tried that, but it didn't seem to work.

Here is what I have:

#dynamic 0x804268

#org @start
trainerbattle 0x0 0x001 0x0 @before @after
msgbox @beaten 0x6
closeonkeypress
fadescreen 0x1
hidesprite 0x8
fadescreen 0x0
release
end

#org @before
= OAK: Oh, [player]! I... Alright... You\ncaught me. I come here on occasion\pto keep my skills sharp.\pSo, how about it? Would you be\nwilling to battle an old CHAMPION?


#org @after
= OAK: What a battle! You are indeed\na force to be reckoned with!\pI wonder how you will fare in\nTRAINER TOWER!


#org @beaten
= OAK: Hey, [player], how about we keep\nthis battle quiet?\pI can't have everyone wanting to\nbattle me.\pHow could I focus on my research\nwith that kind of attention?



I only added:

closeonkeypress
fadescreen 0x1
hidesprite 0x8
fadescreen 0x0

to my original script, which works fine.

19
Programming / Re: Pokemon Fire Red Rival name change within the game?
« on: October 08, 2019, 01:06:33 pm »
If everything is on Capital letters.
GREEN should be hexcodec as

C1CCBFBFC8

G=C1
R=CC
E=BF
E=BF
N=C8

search for C1CCBFBFC8 and replace it for:

CCBFBEF4F4

CC=R
BF=E
BE=D
F4=(empty space)
F4=(empty space)

.tbl is here

https://datacrystal.romhacking.net/wiki/Pok%C3%A9mon_FireRed_and_LeafGreen:TBL

Of course if is lowercase the hexcode change. So be sure of use the correct table conversion.

Red
RED
red
Aren't the same...

Got it! :woot!: :woot!:
Thanks! And as far as finding the rival dialogue text, do I include the line breaks \n \p and so on, when searching in hex editor?

20
ROM Hacking Discussion / Re: Fire Red Rival dialogue/encounters
« on: October 07, 2019, 12:35:52 pm »
Thanks so much! I will definitely try this out. Might take some time to learn the program, but that's fine. I'm swapping Red and Blue in my hack, so I just want to change their dialogue to reflect that. Aside from the dialogue, I only have a few more sprites to tweak and it'll be good to go.

Pages: [1] 2 3 4 5 6 7