Conversation Backgrounds For Buildfiles

Foreword

This guide covers the process of inserting conversation backgrounds in your buildfile, without the aid of FEBuilder.
This guide is geared towards 16 color backgrounds, as 64 color backgrounds aren’t easily insertable without FEBuilder.

This guide assumes that you have a basic knowledge of Event Assembler, and how it works.
it will also assume you have properly formatted conversation background images.

Introduction

For a long while, inserting conversation backgrounds has been…less than ideal for people using buildfiles.
I seek to change that with this document.

Getting started

Thanks to tmx2tsa, made by @Snakey1, we don’t need to rely on FEBuilder to create our TSA for us.
We can instead make one TSA for every background we insert.

Extra details on tmx2tsa can be found here:

First off, get tmx2tsa. It can be found in the Snake’s Pit of ASM.
Place it in an easy to reach directory.

Once you have tmx2tsa, get your formatted conversation background image, and put it the same directory as tmxt2tsa.

Creating the TSA

Open Tiled, and create a TMX map with 8x8 tiles, with a 32 tile width and a 20 tile height.

flameshot_62

Add your conversation background image as a tileset, with 8x8 tiles.
Once you do this, select the whole tileset, then place it on the map. The map itself should look something like this:

Now save the TMX map to the same directory as the conversation background image you used as a tileset.

Next, run tmx2tsa on the TMX file with the palette index set to 0.
This can be done via a command line.

For Windows users, this would look like:


tmx2tsa -p 0 TMXFile.tmx TSAFile.dmp

For everyone else, you’ll need to use the python script like so:

python3 tmx2tsa.py -p 0 TMXFile.tmx TSAFile.dmp

This should output the TSA file that you need.

Including the files in your buildfile

Open a .event file to be used as your conversation background installer.

#incbin the TSA file you made and give it a label:

ALIGN 4
BGTSA:
#incbin "BackgroundTSA.dmp"

After that, #incbin your conversation background image (lz77 compressed), and its palette:

ALIGN 4
BackgroundImage:
#incbin "Background.lz77"

ALIGN 4
BackgroundPalette:
#incbin "Background.pal"

Using the background

To apply your background to the background table, use this macro:

#define ConvoBackgroundTable 0x95DD1C //Vanilla table

#define SetConvoBackground(Index, ImagePointer, TSAPointer, PalettePointer) "PUSH; ORG ConvoBackgroundTable + (Index * 0xC); POIN ImagePointer TSAPointer PalettePointer; POP"

//Let's replace Woodland since it's used in the prologue of vanilla
SetConvoBackground(Woodland, BackgroundImage, BGTSA, BackgroundPalette)

BGTSA can be used for any new conversation backgrounds you want to add.

You should be able to use the background the same way you’d use any other background.

Now assemble your ROM. The background should be in place.

Final things

Make sure not to overwrite conversation background ID 0x35.
It’s the pure black background and the game uses it.

Background ID 0x37 is used to select a random background for the support viewer.
It should also be left alone, unless you know what you’re doing.

It’s worth mentioning that you can repoint and expand the conversation background table.
The addresses to repoint are as follows:

PUSH

ORG 0xE894
POIN ConvoBackgroundTable
ORG 0xECF4
POIN ConvoBackgroundTable
ORG 0xEDF8
POIN ConvoBackgroundTable
ORG 0x10E44
POIN ConvoBackgroundTable

POP

For more information on repointing and expanding tables and lists, read Clendo’s Guide on Repointing and Expanding Tables.

Special thanks

Snakey1 for tmx2tsa.

The JP Hack team for the SetConvoBackground macro.

@Vesly for the documentation on repointing the conversation background table.

8 Likes