Jump to content

[SOLVED][FE7] Character Forcing


Avril Lavigne
 Share

Recommended Posts

Hey I'm here to cover one of the final things I think I need to cover. I mean, I'm not really good with conditions at the moment but I'm sure I could figure that out (hopefully) on my own.

Anyways, I have no idea how to force a certain character(s) on a certain chapter(s). Soooo can someone explain or link me a good explanation about how it works?

Thanks.

Edited by Avril Lavigne
Link to comment
Share on other sites

Hi avril, thanks for getting back to me on the lengthy explanation on the Sappy interface I wrote for you, I hope it was very informative

the character forcer, which you can find in Nintenlord's resource topic, works like this: you have a pointer table, each corresponding to a successive chapter. This table is written to an arbitrary arrest by Nintenlord ($D80000? I think?) These pointers point to a list of characters, terminated by a 0x00. I know this doesn't make s lot of sense so I'll write out an example:

At $D80000 you have several pointers written in succession, like so:

00 00 D7 08 10 00 D7 08 20 00 D7 08

The first is a pointer to the list of characters forced in the prologue, the second for chapter 0x01, etc. This corresponds to the chapters in the Chapter Data Editor. So if your Chapter 13 is written to 0x02, then the third pointer corresponds to Chapter 13.

At $D70000 by default nothing will be written - you need to write the character IDs of those whom you want. So if you wrote 01 02 03, this would force Eliwood, Lyn and Hector. You end this with 00 t let the game know it can stop reading for IDs. Otherwise, if you wrote 01 02 03 04 it would also force character 0x04, as opposed to 01 02 03 00 04 which would only force characters 0x01 0x02 0x03.

Does that make a bit more sense?

Link to comment
Share on other sites

Hi avril, thanks for getting back to me on the lengthy explanation on the Sappy interface I wrote for you, I hope it was very informative

I'm really sorry I've been really depressed lately and haven't been doing anything with my life. I read it and it did help. Just been having a rough time lately.

the character forcer, which you can find in Nintenlord's resource topic, works like this: you have a pointer table, each corresponding to a successive chapter. This table is written to an arbitrary arrest by Nintenlord ($D80000? I think?) These pointers point to a list of characters, terminated by a 0x00. I know this doesn't make s lot of sense so I'll write out an example:

At $D80000 you have several pointers written in succession, like so:

00 00 D7 08 10 00 D7 08 20 00 D7 08

It's just FF FF FF FF 00 00 00 10 FF FF FF FF at D80000 :( and I applied the patch.

The first is a pointer to the list of characters forced in the prologue, the second for chapter 0x01, etc. This corresponds to the chapters in the Chapter Data Editor. So if your Chapter 13 is written to 0x02, then the third pointer corresponds to Chapter 13.

Wait hold up. When do I use these IDs?

At $D70000 by default nothing will be written - you need to write the character IDs of those whom you want. So if you wrote 01 02 03, this would force Eliwood, Lyn and Hector. You end this with 00 t let the game know it can stop reading for IDs. Otherwise, if you wrote 01 02 03 04 it would also force character 0x04, as opposed to 01 02 03 00 04 which would only force characters 0x01 0x02 0x03.

Yeah I think I get it! But I found something in the document with the patch and it says...

At offset $DF1000, you will find a pointer table that determines which characters are forced to a chapter. Each chapter has it's own pointer. The pointer points to a group of character reference number bytes ending with 00. If the pointer is 00, no characters are forced except the main character. The pointer to the pointer table is at $8DDD4, so you can change it as you wish.

So basically what you said except with different pointers. Now I don't wanna get myself all confused here but I'm just wondering which pointers are correct. Yours or... this one haha.

But the same thing, nothing is there. It's all 00s.

Does that make a bit more sense?

Yes. Helpful. But how long is a chapter pointer in terms of 00s? So say (not saying I'm gonna want this, just making an "if" situation) if I wanted 7 characters forced would I just put XX XX XX XX XX XX XX 00 and then after the 00 I start making my next character "forcings"? Or is that too many? Like I don't know how much my limit would be for each chapter. Maybe I don't get it.... I just don't know if/when to use the chapter IDs or where they are referenced to. I'm really not that smart.

Replies in bold

Edited by Avril Lavigne
Link to comment
Share on other sites

please do not do the replies in bold thing, it makes it so tjhast I can't quote your post

1. that's okay, next time, just at least let me know you read and understood it

2. I said d80000? because I wasn't sure. I'm 99% sure the patch comes with a readme, which, as the title implies, you should read to find out what addresses things are written to

3. the Chapter IDs? you user them in your events. if you MNCH 0x02 it will load chapter 0x02. if you aren't sure which chapter that is, once again, refer to the Chapter Data Editor. For the purposes of this patch, you would never actually need to write the IDs anywhere, they are only for reference.

4. my pointers were just examples. the doc is correct. if there are all 00s, just write your own pointers. better yet, just try it and see what happens to your ROM. if it breaks or doesn't work, you did something wrong.

5. yes, that's precisely it. they are as long as you want them to be. have you ever changed an effectiveness pointer for a weapon? it is the same sort of thing as that. you don't actually use the Chapter IDs at all; only if you want to figure out which pointer at DF4000 it is that you need to edit.

Once again, this is (EXAMPLE ONLY) what I might have written at DF1000:

60 80 D7 08 68 80 D7 08

this means "prologue forced character list is at $D78060, Chapter 0x01 forced character list is at $D78068"

if I wanted to force characters 0x0A and 0x0F for both chapters, what do you think I would write at those two addresses?

Edited by Agro
Link to comment
Share on other sites

please do not do the replies in bold thing, it makes it so tjhast I can't quote your post

1. that's okay, next time, just at least let me know you read and understood it

2. I said d80000? because I wasn't sure. I'm 99% sure the patch comes with a readme, which, as the title implies, you should read to find out what addresses things are written to

3. the Chapter IDs? you user them in your events. if you MNCH 0x02 it will load chapter 0x02. if you aren't sure which chapter that is, once again, refer to the Chapter Data Editor. For the purposes of this patch, you would never actually need to write the IDs anywhere, they are only for reference.

4. my pointers were just examples. the doc is correct. if there are all 00s, just write your own pointers. better yet, just try it and see what happens to your ROM. if it breaks or doesn't work, you did something wrong.

5. yes, that's precisely it. they are as long as you want them to be. have you ever changed an effectiveness pointer for a weapon? it is the same sort of thing as that. you don't actually use the Chapter IDs at all; only if you want to figure out which pointer at DF4000 it is that you need to edit.

Once again, this is (EXAMPLE ONLY) what I might have written at DF1000:

60 80 D7 08 68 80 D7 08

this means "prologue forced character list is at $D78060, Chapter 0x01 forced character list is at $D78068"

if I wanted to force characters 0x0A and 0x0F for both chapters, what do you think I would write at those two addresses?

You would put 0A 0F 00 at those addresses.... okay... I might have gotten it. Just give me a while and I'll get back to you

Link to comment
Share on other sites

Posted 05 May 2013 - 11:55 PM

"if i recall correctly it points to a pointer table, so you need to make more pointers there

basically a pointer table is like

02 23 43 08 21 AB 67 08 and so on

the pointers correspond to a chapter each, so the first four bytes are for the Prologue, the next four for chapter 1, etc, etc.

So if you wanted to force characters 0x11, 0x13 and 0x1B in the prologue, you would do this at DF1000:

00 00 DB 08

then go to 0xDB0000 and write in 11 13 1B 00 (00 is the way that you say "STOP READING HERE")

and that should force those three characters

Likewise, if you wanted to do the same for chapter 1, you could just go:

00 00 00 00 00 00 DB 08

and do the same

or for chapter 2:

00 00 00 00 00 00 00 00 00 00 DB 08

and so on

of course, if you were forcing characters for the prologue and chapter 1 you would fill in those 00's accordingly

The position of the pointer corresponds to whatever it is in the Chapter Data Editor, mind you. So if for some crazy reason your Chapter 1 was at 0x5B, then to get to where you have to write the pointer, you can go 0x5B * 4 + DF1000 and write 00 00 DB 08 there. Of course, you don't have to put anything at DB0000, but that's just an example.

did that help at all?"

-Agro

I found this explanation from you. This cleared everything up.

So at DF1000 I used 00 00 00 00 00 00 DB 08 and then went to DB00000 to write 2D 00 to force character 0x2D to chapter 1.

Because it's DF1000 + 4 * 01 (the chapter ID) to refer to a pointer at which my character IDs are.

So if I wrote 60 80 DB 08 at DF1018 [DF1000 + (addition) 4 * (multiplication) 06] I would then put the IDs 01 02 03 00 at DB8060 if I wanted to force characters 0x01 0x02 and 0x03 on Chapter 6!

I GOT IT YOU ARE THE BOMB.

Edited by Avril Lavigne
Link to comment
Share on other sites

damn, I knew I'd written an explanation on this stuff before

@Elieson: as far as I'm aware this is only for FE7. I think FE8's character forcer works quite differently, and FE6... who knows about that thing.

Edited by Agro
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...