Map Sprites are PURE EVIL [FE8]

I’ve absolutely had it. After more than a week of frequent debugging, I give up.

Both my custom standing and moving map sprites are… interesting.
Let me explain.

My standing sprites take random tiles out of VRAM, and my moving sprites seem to take the last one that was loaded… The not being able to attack is no longer problematic. Please ignore that.

I repointed my standing and moving map sprite tables; I have a bunch of custom classes.

I’m using buildfile, so they’re going into free space. They are 16 aligned.

The weird thing is, only my custom graphics are bugged. I’ve tested some slots that call vanilla graphics, and they’re fine.

I’m using something like this for each entry:

NomadSt: #incext Png2Dmp NomadSt.png --lz77 WORD 0 0
So yes, it’s compressed. It shows up in GBAGE nicely. I’ve even found the offset of a sprite with MESSAGE and overwritten it in GBAGE with the image, and nothing changes.

That would imply that something is wrong with my tables, right?
I found out that there’s a cap to the tables built right into engine, so I fix that… Nothing changes.

All right. Lets see if I can do this in a vanilla ROM. Success, but this overwrote the Eirika lord map sprite.
Hmm… Let’s overwrite… mercenary? No! Still broken.

I don’t have my graphics and animation pointers flipped in the moving sprite table.
Sizes are correct in the standing sprite table.
Standing sprites are referenced in the class editor.

I’ve done everything I can think of in my power to fix this to no avail.

This is either something weird that I don’t know of in the game or my own pure idiocy, so let’s find out! Please. I’m losing my sanity here.

[details=Graphical installer][code]
#include Defenitions.event

ALIGN 4

BlackFalcoknightSt:
#incext Png2Dmp BlackFalcoknightSt.png --lz77
WORD 0 0

BlackFalcoknightMv:
#incext Png2Dmp BlackFalcoknightMv.png --lz77
WORD 0 0

ChampionSt:
#incext Png2Dmp ChampionSt.png --lz77
WORD 0 0

ChampionMv:
#incext Png2Dmp ChampionMv.png --lz77
WORD 0 0

CommanderSt:
#incext Png2Dmp CommanderSt.png --lz77
WORD 0 0

CommanderMv:
#incext Png2Dmp CommanderMv.png --lz77
WORD 0 0

DarkKnightSt:
#incext Png2Dmp DarkKnightSt.png --lz77
WORD 0 0

DarkKnightMv:
#incext Png2Dmp DarkKnightMv.png --lz77
WORD 0 0

GladiatorSt:
#incext Png2Dmp GladiatorSt.png --lz77
WORD 0 0

GladiatorMv:
#incext Png2Dmp GladiatorMv.png --lz77
WORD 0 0

HalberdierSt:
#incext Png2Dmp HalberdierSt.png --lz77
WORD 0 0

HalberdierMv:
#incext Png2Dmp HalberdierMv.png --lz77
WORD 0 0

HectorSt:
#incext Png2Dmp HectorSt.png --lz77
WORD 0 0

HectorMv:
#incext Png2Dmp HectorMv.png --lz77
WORD 0 0

HunterSt:
#incext Png2Dmp HunterSt.png --lz77
WORD 0 0

HunterMv:
#incext Png2Dmp HunterMv.png --lz77
WORD 0 0

ImaplerSt:
#incext Png2Dmp ImpalerSt.png --lz77
WORD 0 0

ImpalerMv:
#incext Png2Dmp ImpalerMv.png --lz77
WORD 0 0

IzukSt:
#incext Png2Dmp IzukSt.png --lz77
WORD 0 0

IzukMv:
#incext Png2Dmp IzukMv.png --lz77
WORD 0 0

MagusMSt:
#incext Png2Dmp MagusMSt.png --lz77
WORD 0 0

MagusMMv:
#incext Png2Dmp MagusMMv.png --lz77
WORD 0 0

MagusFSt:
#incext Png2Dmp MagusFSt.png --lz77
WORD 0 0

MagusFMv:
#incext Png2Dmp MagusFMv.png --lz77
WORD 0 0

MatriarchSt:
#incext Png2Dmp MatriarchSt.png --lz77
WORD 0 0

MatriarchMv:
#incext Png2Dmp MatriarchMv.png --lz77
WORD 0 0

MonkFSt:
#incext Png2Dmp FemaleMonkSt.png --lz77
WORD 0 0

MonkFMv:
#incext Png2Dmp FemaleMonkMv.png --lz77
WORD 0 0

MountedBrigandSt:
#incext Png2Dmp MountedBrigandSt.png --lz77
WORD 0 0

MountedBrigandMv:
#incext Png2Dmp MountedBrigandMv.png --lz77
WORD 0 0

NomadSt:
#incext Png2Dmp NomadSt.png --lz77
WORD 0 0

NomadMv:
#incext Png2Dmp NomadMv.png --lz77
WORD 0 0

PatriarchSt:
#incext Png2Dmp PatriarchSt.png --lz77
WORD 0 0

PatriarchMv:
#incext Png2Dmp PatriarchMv.png --lz77
WORD 0 0

SentinelSt:
#incext Png2Dmp SentinelSt.png --lz77
WORD 0 0

SentinelMv:
#incext Png2Dmp SentinelMv.png --lz77
WORD 0 0

TruebladeSt:
#incbin “Test.bin”
#incext Png2Dmp TruebladeSt.png --lz77
WORD 0 0

TruebladeMv:
#incext Png2Dmp TruebladeMv.png --lz77
WORD 0 0

TruerbladeSt:
#incext Png2Dmp TruerbladeSt.png --lz77
WORD 0 0

TruerbladeMv:
#incext Png2Dmp TruerbladeMv.png --lz77
WORD 0 0

WarlockSt:
#incext Png2Dmp WarlockSt.png --lz77
WORD 0 0

WarlockMv:
#incext Png2Dmp WarlockMv.png --lz77
WORD 0 0[/code][/details]

[details=Moving Sprite Table][code]#define csvmacro000(arg000,arg001) "WORD arg000 arg001 "

MovingSpriteTable:
csvmacro000(0x81c33cc,0x81c3d7c)
csvmacro000(0x81c3ed4,0x81c46cc)
csvmacro000(0x81c4824,0x81c52b4)
csvmacro000(0x81c5414,0x81c5e84)
csvmacro000(0x81c5fe4,0x81c692c)
csvmacro000(0x81c5fe4,0x81c692c)
csvmacro000(0x81c6a84,0x81c7428)
csvmacro000(0x81c6a84,0x81c7428)
csvmacro000(0x81c7580,0x81c7e74)
csvmacro000(0x81c7580,0x81c7e74)
csvmacro000(0x81c7fcc,0x81c8a80)
csvmacro000(0x81c7fcc,0x81c8a80)
csvmacro000(0x81c8be0,0x81c945c)
csvmacro000(0x81c95b4,0x81ca124)
csvmacro000(0x81ca27c,0x81caa20)
csvmacro000(0x81cab78,0x81cb2e0)
csvmacro000(0x81cb438,0x81cbd94)
csvmacro000(0x81cbef4,0x81cc874)
csvmacro000(0x81cc9d4,0x81cc874)
csvmacro000(0x81cd314,0x81cdb58)
csvmacro000(0x81cdcb0,0x81ce4fc)
csvmacro000(0x81ce65c,0x81ceee0)
csvmacro000(0x81cf040,0x81cf7e8)
csvmacro000(0x81cf940,0x81d0160)
csvmacro000(0x81d02b8,0x81d0a7c)
csvmacro000(0x81d0bd4,0x81d13c8)
csvmacro000(0x81d1520,0x81d1d48)
csvmacro000(0x81d1ea0,0x81d2714)
csvmacro000(0x81d286c,0x81d3194)
csvmacro000(0x81d286c,0x81d3194)
csvmacro000(0x81d32ec,0x81d403c)
csvmacro000(0x81d419c,0x81d4eec)
csvmacro000(0x81d504c,0x81d5e58)
csvmacro000(0x81d5fc0,0x81d6d6c)
csvmacro000(0x81d6ec4,0x81d7cc8)
csvmacro000(0x81d6ec4,0x81d7cc8)
csvmacro000(0x81d7e28,0x81d8668)
csvmacro000(0x81d87c0,0x81d908c)
csvmacro000(0x81d91e4,0x81d9b58)
csvmacro000(0x81d9cb0,0x81da694)
csvmacro000(0x81da7ec,0x81db0f8)
csvmacro000(0x81db250,0x81dbbcc)
csvmacro000(0x81dbd24,0x81dc590)
csvmacro000(0x81dc6f0,0x81dcf44)
csvmacro000(0x81dd0a4,0x81dd888)
csvmacro000(0x81dd0a4,0x81dd888)
csvmacro000(0x81dd9e0,0x81de2c4)
csvmacro000(0x81dd9e0,0x81de2c4)
csvmacro000(0x81de41c,0x81dec38)
csvmacro000(0x81de41c,0x81dec38)
csvmacro000(0x81ded90,0x81df548)
csvmacro000(0x81df6a0,0x81dfacc)
csvmacro000(0x81dfc24,0x81e058c)
csvmacro000(0x81dfc24,0x81e058c)
csvmacro000(0x81e06e4,0x81e0e40)
csvmacro000(0x81e0f98,0x81e173c)
csvmacro000(0x81e189c,0x81e2088)
csvmacro000(0x81e06e4,0x81e0e40)
csvmacro000(0x81e21e0,0x81e2f34)
csvmacro000(0x81e308c,0x81e39ec)
csvmacro000(0x81e0f98,0x81e173c)
csvmacro000(0x81e189c,0x81e2088)
csvmacro000(0x81e3b44,0x81e4340)
csvmacro000(0x81e4498,0x81e4ea4)
csvmacro000(0x81e4ffc,0x81e582c)
csvmacro000(0x81e5984,0x81e62b4)
csvmacro000(0x81e640c,0x81e6df4)
csvmacro000(0x81e6f4c,0x81e7638)
csvmacro000(0x81e7790,0x81e7f58)
csvmacro000(0x81e80b0,0x81e8840)
csvmacro000(0x81e06e4,0x81e0e40)
csvmacro000(0x81e89d0,0x81e96f0)
csvmacro000(0x81e9848,0x81ea5dc)
csvmacro000(0x81ea734,0x81eaea0)
csvmacro000(0x81eaff8,0x81eb99c)
csvmacro000(0x81ebaf4,0x81ec4fc)
csvmacro000(0x81ec654,0x81ed1c8)
csvmacro000(0x81ed418,0x81edbc4)
csvmacro000(0x81edd1c,0x81ee558)
csvmacro000(0x81ee6b0,0x81eec84)
csvmacro000(0x81eedec,0x81ef5cc)
csvmacro000(PatriarchMv,0x81efe70)
csvmacro000(MatriarchMv,0x81f06d8)
csvmacro000(DarkKnightMv,0x81f1080)
csvmacro000(DarkKnightMv,0x81f1a54)
csvmacro000(MagusMMv,0x81f249c)
csvmacro000(MagusFAnim,0x81f2ec4)
csvmacro000(0x81c6a84,0x81c7428)
csvmacro000(CommanderMv,0x81f3fa0)
csvmacro000(ImpalerMv,0x81f49b8)
csvmacro000(0x81d504c,0x81d5e58)
csvmacro000(HunterMv,0x81f607c)
csvmacro000(0x81c6a84,0x81c7428)
csvmacro000(ChampionMv,0x81f7570)
csvmacro000(TruebladeMv,0x81f7e28)
csvmacro000(TruebladeMv,0x81f876c)
csvmacro000(MountedBrigandMv,0x81f90a0)
csvmacro000(WarlockMv,0x81f95f4)
csvmacro000(0x81e640c,0x81e6df4)
csvmacro000(BlackFalcoknightMv,0x81faf40)
csvmacro000(0x81fb098,0x81fbe5c)
csvmacro000(0x81fbfbc,0x81fd028)
csvmacro000(0x81fd180,0x81fd808)
csvmacro000(0x81fd960,0x81fdfe8)
csvmacro000(0x81fe140,0x81fe7c8)
csvmacro000(0x81fe920,0x81fee74)
csvmacro000(0x81fefdc,0x81ff4c8)
csvmacro000(0x81ff620,0x81ffbbc)
csvmacro000(0x81ffd24,0x8200348)
csvmacro000(0x82004a0,0x8200afc)
csvmacro000(0x8200c54,0x8201338)
csvmacro000(0x8201490,0x8201b84)
csvmacro000(0x8200c54,0x8201338)
csvmacro000(0x8201490,0x8201b84)
csvmacro000(0x81d7e28,0x81d8668)
csvmacro000(0x81d87c0,0x81d908c)
csvmacro000(0x81dd0a4,0x81dd888)
csvmacro000(0x81dd0a4,0x81dd888)
csvmacro000(0x81e6f4c,0x81e7638)
csvmacro000(MonkFMv,0x81e7638)
csvmacro000(0x81c5fe4,0x81c692c)
csvmacro000(0x81c5fe4,0x81c692c)
csvmacro000(0x81c7580,0x81c7e74)
csvmacro000(0x81ed418,0x81edbc4)
csvmacro000(0x81d32ec,0x81d403c)
csvmacro000(0x81d02b8,0x81d0a7c)
csvmacro000(0x81d0bd4,0x81d13c8)
csvmacro000(0x81ca27c,0x81caa20)
csvmacro000(0x81cab78,0x81cb2e0)
csvmacro000(0x81e3b44,0x81e4340)
csvmacro000(0x81e4ffc,0x81e582c)
csvmacro000(0x81e5984,0x81e62b4)
csvmacro000(0x81cc9d4,0x81cd1bc)
csvmacro000(0x81cd314,0x81cdb58)
csvmacro000(0x81e89d0,0x81e96f0)
csvmacro000(HalberdierMv,0x81edbc4)
csvmacro000(SentinelMv,0x81edbc4)
csvmacro000(0x81cb438,0x81cbd94)
csvmacro000(GladiatorMv,0x81e4ea4)
csvmacro000(HectorMv,0x81c8a80)
csvmacro000(TruerbladeMv,0x81cd1bc)
csvmacro000(0x81d91e4,0x81d9b58)
csvmacro000(IzukMv,0x81d9b58)
csvmacro000(NomadMv,0x81db0f8)
[/code][/details]

[details=Standing Sprite Table][code]#define csvmacro001(arg000,arg001,arg002,arg003,arg004) "BYTE arg000 arg001 arg002 arg003 ;WORD arg004 "

StandingSpriteTable:
csvmacro001(0x2,0x0,0x1,0x0,0x81b7828)
csvmacro001(0x0,0x0,0x0,0x0,0x81b79d4)
csvmacro001(0x2,0x0,0x1,0x0,0x81b7ad8)
csvmacro001(0x2,0x0,0x1,0x0,0x81b7cd4)
csvmacro001(0x2,0x0,0x1,0x0,0x81b7ecc)
csvmacro001(0x2,0x0,0x1,0x0,0x81b8088)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8258)
csvmacro001(0x0,0x0,0x1,0x0,0x81b8364)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8504)
csvmacro001(0x0,0x0,0x0,0x0,0x81b8640)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8678)
csvmacro001(0x2,0x0,0x2,0x0,0x81b87b0)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8940)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8aa0)
csvmacro001(0x2,0x0,0x0,0x0,0x81B8BDC)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8cf0)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8e00)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8ee8)
csvmacro001(0x2,0x0,0x0,0x0,0x81b8fc4)
csvmacro001(0x2,0x0,0x0,0x0,0x81b9100)
csvmacro001(0x2,0x0,0x0,0x0,0x81b9234)
csvmacro001(0x2,0x0,0x0,0x0,0x81b934c)
csvmacro001(0x2,0x0,0x0,0x0,0x81b9460)
csvmacro001(0x2,0x0,0x0,0x0,0x81b95a4)
csvmacro001(0x2,0x0,0x1,0x0,0x81b96c8)
csvmacro001(0x2,0x0,0x1,0x0,0x81b9894)
csvmacro001(0x2,0x0,0x1,0x0,0x81b9a88)
csvmacro001(0x2,0x0,0x1,0x0,0x81b9c7c)
csvmacro001(0x2,0x0,0x1,0x0,0x81b9e70)
csvmacro001(0x3,0x0,0x1,0x0,0x81ba068)
csvmacro001(0x2,0x0,0x0,0x0,0x81ba274)
csvmacro001(0x2,0x0,0x0,0x0,0x81ba3ac)
csvmacro001(0x2,0x0,0x0,0x0,0x81ba4ec)
csvmacro001(0x2,0x0,0x0,0x0,0x81ba648)
csvmacro001(0x2,0x0,0x1,0x0,0x81ba7a8)
csvmacro001(0x2,0x0,0x1,0x0,0x81ba95c)
csvmacro001(0x2,0x0,0x0,0x0,0x81bab20)
csvmacro001(0x2,0x0,0x0,0x0,0x81bac74)
csvmacro001(0x2,0x0,0x0,0x0,0x81badcc)
csvmacro001(0x2,0x0,0x0,0x0,0x81baf24)
csvmacro001(0x2,0x0,0x1,0x0,0x81bb098)
csvmacro001(0x2,0x0,0x0,0x0,0x81bb1b8)
csvmacro001(0x3,0x0,0x0,0x0,0x81bb2dc)
csvmacro001(0x2,0x0,0x1,0x0,0x81bb3b0)
csvmacro001(0x2,0x0,0x1,0x0,0x81bb580)
csvmacro001(0x2,0x0,0x1,0x0,0x81bb6b4)
csvmacro001(0x2,0x0,0x0,0x0,0x81bb7f0)
csvmacro001(0x3,0x0,0x2,0x0,0x81bb910)
csvmacro001(0x2,0x0,0x1,0x0,0x81bbbb8)
csvmacro001(0x2,0x0,0x1,0x0,0x81bbcd0)
csvmacro001(0x2,0x0,0x1,0x0,0x81bbdfc)
csvmacro001(0x2,0x0,0x1,0x0,0x81bbf7c)
csvmacro001(0x2,0x0,0x0,0x0,0x81bc0f0)
csvmacro001(0x2,0x0,0x1,0x0,0x81bc26c)
csvmacro001(0x2,0x0,0x0,0x0,0x81bc44c)
csvmacro001(0x2,0x0,0x0,0x0,0x81bc568)
csvmacro001(0x2,0x0,0x0,0x0,0x81bc674)
csvmacro001(0x2,0x0,0x1,0x0,0x81bc774)
csvmacro001(0x2,0x0,0x1,0x0,0x81bc918)
csvmacro001(0x2,0x0,0x0,0x0,0x81bcac4)
csvmacro001(0x2,0x0,0x1,0x0,0x81bcbe8)
csvmacro001(0x2,0x0,0x1,0x0,0x81bcda4)
csvmacro001(0x2,0x0,0x0,0x0,0x81bcf54)
csvmacro001(0x2,0x0,0x0,0x0,0x81bd08c)
csvmacro001(0x3,0x0,0x0,0x0,0x81bd1e0)
csvmacro001(0x3,0x0,0x2,0x0,0x81bd2dc)
csvmacro001(0x2,0x0,0x2,0x0,0x81bd444)
csvmacro001(0x3,0x0,0x1,0x0,0x81bd5d0)
csvmacro001(0x3,0x0,0x1,0x0,0x81bd6fc)
csvmacro001(0x3,0x0,0x0,0x0,0x81bd864)
csvmacro001(0x3,0x0,0x1,0x0,0x81bd98c)
csvmacro001(0x3,0x0,0x0,0x0,0x81bdad0)
csvmacro001(0x3,0x0,0x0,0x0,0x81bdc10)
csvmacro001(0x3,0x0,0x2,0x0,0x81bdd54)
csvmacro001(0x3,0x0,0x1,0x0,0x81bdee4)
csvmacro001(0x3,0x0,0x1,0x0,0x81be048)
csvmacro001(0x3,0x0,0x1,0x0,0x81be1d8)
csvmacro001(0x3,0x0,0x2,0x0,0x81be2ec)
csvmacro001(0x3,0x0,0x1,0x0,0x81be504)
csvmacro001(0x3,0x0,0x2,0x0,0x81be714)
csvmacro001(0x3,0x0,0x1,0x0,0x81be988)
csvmacro001(0x0,0x0,0x1,0x0,0x81beb04)
csvmacro001(0x3,0x0,0x1,0x0,0x81bec84)
csvmacro001(0x3,0x0,0x0,0x0,0x81bedd0)
csvmacro001(0x3,0x0,0x2,0x0,0x81bee74)
csvmacro001(0x3,0x0,0x2,0x0,0x81bf06c)
csvmacro001(0x3,0x0,0x1,0x0,0x81bf29c)
csvmacro001(0x3,0x0,0x2,0x0,0x81bf418)
csvmacro001(0x2,0x0,0x1,0x0,0x81bf690)
csvmacro001(0x2,0x0,0x1,0x0,0x81bf824)
csvmacro001(0x2,0x0,0x1,0x0,0x81bf9b8)
csvmacro001(0x2,0x0,0x1,0x0,0x81bfb4c)
csvmacro001(0x2,0x0,0x1,0x0,0x81bfcc0)
csvmacro001(0x2,0x0,0x1,0x0,0x81bfe34)
csvmacro001(0x2,0x0,0x0,0x0,0x81bffa8)
csvmacro001(0x2,0x0,0x0,0x0,0x81c0078)
csvmacro001(0x2,0x0,0x0,0x0,0x81c014c)
csvmacro001(0x2,0x0,0x0,0x0,0x81c022c)
csvmacro001(0x2,0x0,0x0,0x0,0x81c0310)
csvmacro001(0x2,0x0,0x1,0x0,0x81c03ec)
csvmacro001(0x2,0x0,0x0,0x0,0x81c0500)
csvmacro001(0x2,0x0,0x0,0x0,0x81c05d8)
csvmacro001(0x0,0x0,0x0,0x0,0x81c068c)
csvmacro001(0x2,0x0,0x0,0x0,0x8b2e190)
csvmacro001(0x2,0x0,0x1,0x0,0x81c0840)
csvmacro001(0x2,0x0,0x1,0x0,0x81c0934)
csvmacro001(0x0,0x0,0x0,0x0,0x81c0a70)
csvmacro001(0x2,0x0,Medium,0x0,BlackFalcoknightSt)
csvmacro001(0x2,0x0,Small,0x0,ChampionSt)
csvmacro001(0x2,0x0,Medium,0x0,CommanderSt)
csvmacro001(0x2,0x0,Medium,0x0,DarkKnightSt)
csvmacro001(0x2,0x0,Medium,0x0,GladiatorSt)
csvmacro001(0x2,0x0,Medium,0x0,HalberdierSt)
csvmacro001(0x2,0x0,Medium,0x0,HectorSt)
csvmacro001(0x2,0x0,Small,0x0,HunterSt)
csvmacro001(0x2,0x0,Medium,0x0,ImaplerSt)
csvmacro001(0x2,0x0,Small,0x0,IzukSt)
csvmacro001(0x2,0x0,Small,0x0,MagusMSt)
csvmacro001(0x2,0x0,Small,0x0,MagusFSt)
csvmacro001(0x2,0x0,Medium,0x0,MatriarchSt)
csvmacro001(0x2,0x0,Small,0x0,MonkFSt)
csvmacro001(0x2,0x0,Large,0x0,MountedBrigandSt)
csvmacro001(0x2,0x0,Medium,0x0,NomadSt)
csvmacro001(0x2,0x0,Medium,0x0,PatriarchSt)
csvmacro001(0x2,0x0,Small,0x0,SentinelSt)
csvmacro001(0x2,0x0,Small,0x0,TruebladeSt)
csvmacro001(0x2,0x0,Small,0x0,TruerbladeSt)
csvmacro001(0x2,0x0,Medium,0x0,WarlockSt)
[/code][/details]

In the tables, you need to add (or ORR) 0x8000000 to your labels. For example, csvmacro000(MountedBrigandMv,0x81f90a0)
should be
csvmacro000(MountedBrigandMv|0x8000000,0x81f90a0)

2 Likes

THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU THANK YOU

You’ve saved my life, Tequila. It was just my pure idiocy.
So they were going in as not pointers. Now I know. I should be able to sleep now.

This is why the FE Universe is the best universe. :relieved: