Accessing World map nodes always

I’m looking for a way to add the option to be able to lead a map on a cleared world map node without needing a skirmish. Something like adding a “Base” option to the menu, and selecting it loads a map.

That’s what Valni is, essentially, so just use / copy that.

Yeah. But I mean like a map that you can access separately from the actual chapter. And when you click on Valni/Lagdou, it throws you into the map inmediately. You can’t hover over it and bring up a menu.

I think you have no choice but to use the world map as it was coded if you cannot code new functionality to it. If you want a new menu option, you need to code it.

I’ve been looking around and this seems relatively easy to implement. Just wanted to know a few things before I start writing asm.

  • So every world map node has two associated chapter IDs, one for prologue/Eirika mode and another for Ephraim mode. Would it be ok to repurpose Ephraim mode’s chapter ID for this ‘‘Base’’ map? Alternatively, I could make a separate struct also indexed on world-map nodes, but it’s a bit more of hassle and (IMO) inelegant. There’s possibly also the option of repurposing skirmishes, although I haven’t taken a close look at that yet. Would repurposing skirmishes also be fine?

  • This alternate map would function just like regular chapters, making use of the event-engine, allowing the creator to pick a win-condition and all that jazz, yes?

  • No world-map story events (portraits sliding in, narrative text showing up, map sprite slowly moving to node, etc.) will be displayed when choosing this menu option, yes?

1 Like

I don’t know if I would like to repurpuse skirmishes, unless it’s the only possible way.

This alternate map would indeed work like a regular chapter. I also wanted to see if it could implement Sme’s free roam patch for these special maps.

And no. No fancy world map events.

Just to chime in, too - I think it’d be nice to have the vanilla game support base camps too, so I don’t think it’s ideal to take over skirmishes or Ephraim mode nodes. Just something like:

  • stop any events from being called (eg. so you can select “battle” for Skirmishes / “enter” for tower/ruins)
  • “base” command appears if flag x is on per chapter/node which starts the chapter (which can just have events to make it a base)

I don’t think a base chapter needs to also have skirmishes etc. also at the same node. Unless the base is accessible from anywhere…

Hope that helps. I’ll be interested to see what you come up with :smile:

Are they different from villages and towns like those implemented in Kaitou?
In Kaitou, Vernis on the world map and Melkaen Coast are cities and can be accessed from the world map many times.
This seems to meet the requirements, except for the part about selecting it from the world map menu.

This is simply a vanilla feature.
In vanilla, ruins and towers can be accessed many times, so I am applying that setup to the city.

One problem is that once you are in the preparation screen, you cannot move to the city.
In case you are wondering, there is a “return to base point from preparation screen” patch to solve this.(FE8J only)

NAME.en=return to base point from preparation screen
INFO.en=Allows you to return to the base point map where the shop is located from the preparation screen.\r\nCrush the "Go to map" option that can be substituted with the B button, and add a "Back to base" selector instead.\r\nBy default, return to 0x38 Merekana coast.\r\nIf you write the process to move to the next stage on the Merekana coast, it will be back.\r\n\r\nThe flag 0xA4 is used to prevent the site from returning to the site.\r\nIf you want to manually proceed from Merekana coast to the next stage, turn off flag 0xA4 and then issue MNC2.\r\n\r\nYou can also return to the map that called the base by calling ASMC_reverse_base_to_chapter.\r\nThis will automatically turn off flags 0xA4 and 0x3 and restore the original stage.\r\n\r\nIt uses the eight flags of A5-AC to record the previous chapter.(Because the mapid is 1 byte, 8 will be used.).\r\nFlag A5-AC is dangerous and should not be touched.

This patch adds a “Back to base” selector to the preparation screen, allowing you to return to a given chapter.
The default is back to Melkaen Coast.

The patch also uses one byte of flags 0xA5-0xAC to store the current chapter ID.
You can return to the original chapter ID by calling the following instruction, which is added by this patch, at the exit of the city.

EVENTSCRIPT:1.en=400D0000{$L1:ASMC_reverse_base_to_chapter.dmp}	Return to original chapter map from the base point map

I have only made the FE8J version because it is a very specific patch and I am not familiar with it, but if there is demand, I could make an FE8U.

The interesting point of this patch is that the preparation screen has a lock that prevents any events from being executed, but the patch ignores this lock and executes the events and issues the MNC2.
The implementation is to force the end of the preparation screen, forcefully invoke a specific event, and issue an MNC2 to move to the base MapID.
Because it is quite aggressive and niche, only the FE8J version was made.

3 Likes

Ty for the clarifications, I’ve got a few more questions.

  • Would the base map be the same regardless from which world map node you enter, or should it differ depending on which node you enter from?

  • Would it be ok to repurpose one of the unused bits of this struct to indicate whether the corresponding node will or will not provide access to the base? This bitfield seems to only make use of two of its thirty-two bits in vanilla, so I reckon it’d be a cheap and relatively harmless thing to use. Actually, I’ll just do this unless someone can convince me it’s a bad idea.

Should probably have it go to the chapter id specified for the node.

Eg.
ALIGN 4
NodeChIDTable:
BYTE 0x3C // Node 0 goes to ch 0x3c
BYTE 0 // Node 1 goes to ch 0

1 Like

Right now I’m thinking of reserving 29 chapterIDs (equal to the amount of world map nodes in vanilla FE8) for base chapters. This comes with certain benefits:

  • You can set a different event pointer table for the base chapters, allowing for a different BeginningScene, CharacterBasedEvents, etc. without clogging up the corresponding story chapter’s events.

  • You can use a different map, in case the base map needs to be smaller or bigger than the corresponding story chapter’s. Re-using the same map is also still possible.

  • There won’t be a need to reserve a (global) flag or other bit in RAM to keep track of whether we’re in a base chapter as ChapterData+0xE can be checked to see if the current chapterID is a base chapter.

Does this make sense to potential users? I’ve also created a GitHub repository if you’d like to see how I’m implementing it.

1 Like

I never learn.

Anywho, it’s ready. LMK if it works as desired.