Jump to content

Jerme/Kenneth-style chapter branches


CT075
 Share

Recommended Posts

I was playing a draft and I was curious as to how FE7 decided which version of PFoD (C27 in Hector mode) to take you to. In the disassembled event files:

// the first code in this sequence is the check
IFAT 0x8 0x7D4C1     // if (asm_cond) {
MNCH 0x23            // Jerme's version
STAL 1
_0x1
ELSE 0x9             // } else {
ENIF 0x8
MNCH 0x24            // Kenneth's version
STAL 1
_0x1
ENIF 0x9             // }

so i went to the offset specified and disassembled the condition code

r0 - no matter, clobbered anyway
r1 - 0x0800D569		probably the interpreter
r2 - 0x00
r3 - 0x08B907C0
r4 - 0x02024F00
r5 - 0x48
r6 - 0x02024F56
r7 - 0x08B90E48
r8 - 0x08B90E4C
r9 - 0x00
r10 - 0x00
r11 - 0x03007DFC
r12 - 0x03

sp - 0x03007DA0
lr - 0x0800D575
pc - 0x0807D4C0

0807D4C0 B510     push    {r4,r14}			@ Self-explanatory
0807D4C2 4806     ldr     r0,=#0x8CB8984	@ offset of list for Jerme - 06 00 08 00 09 00 04 00
@ corresponds to guy, dorcas, bartre, raven respectively
0807D4C4 F7FFFFC0 bl      #0x807D448		@ r0 = sum of guy/dorcas/bartre/raven
0807D4C8 1C04     mov     r4,r0				@ store r0
0807D4CA 4805     ldr     r0,=#0x8CB898E	@ load another offset for Kenneth - 13 00 10 00 12 00 1B 00 11 00
@ Erk, Lucius, Renault (!), Priscilla, Serra
@ Apparently Renault is also checked for this, although his level is set at 0 at this time
@ maybe this is an indication that he was meant to be recruitable for then? Beats me.
0807D4CC F7FFFFBC bl      #0x807D448		@ add their levels
0807D4D0 0424     lsl     r4,r4,#0x10		@ r4 = (short) r4
0807D4D2 0400     lsl     r0,r0,#0x10		@ r0 = (short) r0
0807D4D4 4284     cmp     r4,r0				@ if r4 <= r0 (if physical units levels <= magical)
0807D4D6 D805     bhi     #0x807D4E4		@ ^
0807D4D8 2000     mov     r0,#0x0			@ return false
0807D4DA E004     b       #0x807D4E6
0807D4DC 8984     ldrh    r4,[r0,#0xC]		@ Pointers
0807D4DE 08CB     lsr     r3,r1,#0x3		@ ^
0807D4E0 898E     ldrh    r6,[r1,#0xC]		@ ^
0807D4E2 08CB     lsr     r3,r1,#0x3		@ ^
0807D4E4 2001     mov     r0,#0x1			@ else (physical > mag): return true (Jerme)
@ This means that Jerme only shows up if and only if your physical units are higher
@ which fits in with the idea that "Kenneth's Chapter is the default".
0807D4E6 BC10     pop     {r4}
0807D4E8 BC02     pop     {r1}
0807D4EA 4708     bx      r1

Notice that Renault is included in the "magic users" group.

The log as well as my personal thoughts on the matter can be found here.

Edited by Camtech
Link to comment
Share on other sites

Though I doubt it, it'd be cool if the FE6 routine had a similar check for an unexpected requirement.

Has anyone combed through the in-game script to see if there's any unused convos? Might scrounge up some evidence in there too. I can't think of any other real place, other than maybe an unused event where his specific ID is called for at an earlier time in the game (visiting a village, recruitment, spawning on map, etc.).

It's too bad there still hasn't been any attempt to make a valid editor supporting everything, rather than supporting each thing as they come individually. A wholly-encompassing editor makes finding things like these far more easier and likely when you let the program sniff for you, rather than relying on you to sniff by oneself

Edited by Celice
Link to comment
Share on other sites

from what i've seen from combing through the disassembled event files (i have a lot of free time on my hands >_>) there's nothing leftover in those, unfortunately

i can't speak for the game script, however

---

Zahlman was making a "catch-all" nightmare 3 program in python, but it's slow because he has a job and he has to figure out how to re-consolidate every single tool into either the main program structure (i don't think he's doing that) or figure out how to turn everything into a module

Edited by Camtech
Link to comment
Share on other sites

I'm not really good with interpreting hexadecimal codes, but has anyone found out at what point exactly does it calculate and compare the level sums to determine the next chapter? Because I remember there's a house in Unfulfilled Heart (chapter 24/26, the one with Vaida before Jerme/Kenneth) where a villager talked about Jerme and his Light Brand, which would then be the chapter I got next. I recall it was Hector Mode, I think Normal, where I miscalculated Guy's high level (trained to OHKO Kishuna) being a bit over all my mages, and I really wanted the Guiding Ring and restarting to focus on the mages didn't help change the outcome. So, does it calculate this split before the Vaida chapter or as it ends?

Link to comment
Share on other sites

It is the very last thing the game checks before the Vaida chapter ends.

I haven't logged the actual adding routine, but I'd assume that it calc's the total levels gained rather than absolute levels.

edit:

The only village in C26 gives you the hammerne staff. I'm not sure what you're talking about.

Edited by Camtech
Link to comment
Share on other sites

The only village in C26 gives you the hammerne staff. I'm not sure what you're talking about.
there's a house in Unfulfilled Heart (chapter 24/26, the one with Vaida before Jerme/Kenneth) where a villager talked about Jerme and his Light Brand

A bit confusing with the villager bit, but yeah.

Tempted to learn crap so I can use things such as this XD

Edited by Aura Wolf
Link to comment
Share on other sites

okay

running a quick check through the events

the asm condition is never called directly aside from in the chapter end event

but that doesn't mean that it's not indirectly called somewhere else

Edited by Camtech
Link to comment
Share on other sites

Thanks for the answer. Yeah, I thought of that later as the possible explanation. Some exp on Dorcas coming over from Lyn mode might also have to do with that. Either way, I'll focus more on that when I need that extra crest/ring.

The only village in C26 gives you the hammerne staff. I'm not sure what you're talking about.

A bit confusing with the villager bit, but yeah.

No, I mean the houses, you know the little one-tile brown-roof ones that give nothing but tidbits of info. I don't recall if the two are for Kenneth and Jerme, but I think I checked both of them, and one of the villagers talked about Jerme and the Light Brand vaguely, but you could tell it was him (something about a cursed blade, assassin, etc.) I don't recall which house exactly since I haven't played in years.

Link to comment
Share on other sites

@ This means that Jerme only shows up if and only if your physical units are higher

@ which fits in with the idea that "Kenneth's Chapter is the default".

This is coming from someone totally ignorant on game design, hacking, etc, so I won't be disappointed if my thoughts are dismissed,

but I think arguments about which chapter is "default" based on character stats and coding are a little hard to make. For example, based on starting level, the physical units have a lead of 5 on the magical units. That would suggest that the default is Jerme's chapter - the tiebreaker thing only activates in the somewhat unlikely event that the units' levels tie, while the 5 level gap is going to affect things every time you play. On the flipside, I do think that the magical units are generally better than the physical units, and thus more likely to be used and leveled, and a cogent argument could be made that the 5 level gap will almost always be outstripped by an efficient player (though an efficient player would hardly be taking the default path).

But generally, "default" refers to something that happens if no action is taken. To the fullest extent of this understanding, there is no default chapter - Fire Emblem remains off. If the game is played normally, and chapters are completed, then the path will depend on actions by the player, making the chapter that results strictly not default (not determined in the absence of the player's input, whether the player is aware of the impact of his actions or not).

Ya I know it's BS and no one cares.

Link to comment
Share on other sites

This is coming from someone totally ignorant on game design, hacking, etc, so I won't be disappointed if my thoughts are dismissed,

but I think arguments about which chapter is "default" based on character stats and coding are a little hard to make. For example, based on starting level, the physical units have a lead of 5 on the magical units. That would suggest that the default is Jerme's chapter - the tiebreaker thing only activates in the somewhat unlikely event that the units' levels tie, while the 5 level gap is going to affect things every time you play. On the flipside, I do think that the magical units are generally better than the physical units, and thus more likely to be used and leveled, and a cogent argument could be made that the 5 level gap will almost always be outstripped by an efficient player (though an efficient player would hardly be taking the default path).

Ya I know it's BS and no one cares.

obligatory: go be semantic somewhere else

actual response:

if they are all benched 100% of the time

you go to kenneth

there is no tiebreaker at all

the code very specifically says: "if the physical units have gained a total number levels that is greater than that of the magical units, go to Jerme - Else, go to Kenneth"

two scenarios. either the physical units > magical, or not. if they're equal, that falls under the category of "not".

i'm too lazy to check whether the routine checks if routine checks levels gained or absolute levels but i remember from simple experiment in playing the game that benching all of those units nabs you kenneth

Edited by Camtech
Link to comment
Share on other sites

When you mean default, are you meaning the option that happens regardless of player function, or are you implying that the creators intended Kenneth's chapter to be first? Because the second one doesn't have enough evidence, from what you've said, to merit that conclusion :/

(it's not altogether clear whether you implied the latter or not)

Link to comment
Share on other sites

if you're going to pull semantics up my ass i'll say it straight - there is no "default" because there are exactly two scenarios. either the physical units are higher, or they aren't. literally no other possibility exists in terms of this situation, and both are accounted for; there is no need for a "default" situation to fall back on

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...