Implemented a few more feature requests. (#266)

* Hold Effects Table: 1st param. references a table.

* Renamed "bag.inside3" to "bag.pokemart".

Requested by 1RWT16KU1D.

* Made a certain table's Trigger field a hex field.

I have not tested this yet. There's a chance this could lead to metadata irregularities.

* Added Emerald's vrsn. of the town map annotations.

Testing on a fresh ROM will commence shortly.

* Lowered the length of `scripts.text.destinations`.

The correct length is 8, not 14.

* Fixed a failed test involving an anchor change.

With `graphics.bag.inside.3.palette` and company renamed, the relevant assertion in `Upgrades.cs` should now succeed correctly. I just needed to supply the old names in one spot and the new names in another spot.

* Added the banlist for FireRed & LeafGreen.

This is for the battle tower.
Requested by Sylinuser.

* Added the same banlist for Ruby & Sapphire.
This commit is contained in:
ShinyTillDawn 2025-06-27 11:36:43 -04:00 committed by GitHub
parent 22e60bcf86
commit f52ca66768
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 35 additions and 25 deletions

View File

@ -176,7 +176,7 @@ Format = '''[name<"">]109'''
[[NamedAnchors]]
Name = '''data.maps.banks'''
Address = 0x34CAF8
Format = '''[maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43'''
Format = '''[maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43'''
[[NamedAnchors]]
Name = '''data.maps.layouts'''
@ -1014,24 +1014,24 @@ Address = 0xE85C40
Format = '''`lzm4x32x32|graphics.bag.inside2.tileset`'''
[[NamedAnchors]]
Name = '''graphics.bag.inside3.palette'''
Name = '''graphics.bag.pokemart.palette'''
Address = 0xE8616C
Format = '''`lzp4`'''
[[NamedAnchors]]
Name = '''graphics.bag.inside3.tileset'''
Name = '''graphics.bag.pokemart.tileset'''
Address = 0xE85DC4
Format = '''`lzt4|graphics.bag.inside3.palette`'''
Format = '''`lzt4|graphics.bag.pokemart.palette`'''
[[NamedAnchors]]
Name = '''graphics.bag.inside3.tilemap1'''
Name = '''graphics.bag.pokemart.tilemap1'''
Address = 0xE85EF8
Format = '''`lzm4x32x32|graphics.bag.inside3.tileset`'''
Format = '''`lzm4x32x32|graphics.bag.pokemart.tileset`'''
[[NamedAnchors]]
Name = '''graphics.bag.inside3.tilemap2'''
Name = '''graphics.bag.pokemart.tilemap2'''
Address = 0xE86034
Format = '''`lzm4x32x32|graphics.bag.inside3.tileset`'''
Format = '''`lzm4x32x32|graphics.bag.pokemart.tileset`'''
[[NamedAnchors]]
Name = '''graphics.menu.pokeball.palette'''

View File

@ -61,7 +61,7 @@ scripts.newgame.names.female , 13177C, [name<"">]19
scripts.newgame.names.rival , 1317E0, [name<"">]4
data.maps.names , 0C0E44, [name<"">]
data.maps.banks , 055258, [maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43
data.maps.banks , 055258, [maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43
data.maps.layouts , 0551A0, [layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1>]383
data.maps.dungeons.stats , 0C1A68, [id:: name<""> description<"">]19
@ -267,10 +267,10 @@ graphics.bag.inside1.berry.tilemap , 10D8AC, `lzm4x32x32|graphics.bag.insi
graphics.bag.inside2.palette , 13D248, `lzp4:012`
graphics.bag.inside2.tileset , 13D208, `lzt4|graphics.bag.inside2.palette`
graphics.bag.inside2.tilemap , 13D224, `lzm4x32x32|graphics.bag.inside2.tileset`
graphics.bag.inside3.palette , 09B1D8, `lzp4`
graphics.bag.inside3.tileset , 09B180, `lzt4|graphics.bag.inside3.palette`
graphics.bag.inside3.tilemap1 , 09B188, `lzm4x32x32|graphics.bag.inside3.tileset`
graphics.bag.inside3.tilemap2 , 09B1D0, `lzm4x32x32|graphics.bag.inside3.tileset`
graphics.bag.pokemart.palette , 09B1D8, `lzp4`
graphics.bag.pokemart.tileset , 09B180, `lzt4|graphics.bag.pokemart.palette`
graphics.bag.pokemart.tilemap1 , 09B188, `lzm4x32x32|graphics.bag.pokemart.tileset`
graphics.bag.pokemart.tilemap2 , 09B1D0, `lzm4x32x32|graphics.bag.pokemart.tileset`
graphics.menu.pokeball.palette , 451458, `lzp4`

View File

@ -83,9 +83,9 @@ data.maps.theme.popup, ,,,, ,,,, 0D4C54, [theme.mapnamepopu
graphics.maps.names.popup.palettes, ,,,, ,,,, 0D4CA0, `ucp4:012345`
graphics.maps.names.popup.background, ,,,, ,,,, 0D4CA4, `ucs4x10x18|graphics.maps.names.popup.palettes`
graphics.maps.names.popup.outline, ,,,, ,,,, 0D4C58, `ucs4x6x30|graphics.maps.names.popup.palettes`
data.maps.banks, 053324, 053324, 053344, 053344, , , , , , [maps<[map<[layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites unused:1 x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names cave. weather. mapType. unused. allowEscaping. showMapName. battleType.]1>]?>]34
data.maps.banks, , , , , , , , , 084AA4, [maps<[map<[layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites unused:1 x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names cave. weather. mapType. unused: flags.|t|allowBiking.|allowEscaping.|allowRunning.|showMapName. battleType.]1>]?>]34
data.maps.banks, , , , , 05524C, 05524C, 055260, 055260, , [maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43
data.maps.banks, 053324, 053324, 053344, 053344, , , , , , [maps<[map<[layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites unused:1 x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names cave. weather. mapType. unused. allowEscaping. showMapName. battleType.]1>]?>]34
data.maps.banks, , , , , , , , , 084AA4, [maps<[map<[layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites unused:1 x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names cave. weather. mapType. unused: flags.|t|allowBiking.|allowEscaping.|allowRunning.|showMapName. battleType.]1>]?>]34
data.maps.banks, , , , , 05524C, 05524C, 055260, 055260, , [maps<[map<[layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1> events<[objectCount.100 warpCount.100 scriptCount.100 signpostCount.100 objects<[id. graphics.graphics.overworld.sprites kind: x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/objectCount> warps<[x:|z y:|z elevation.11 warpID. map. bank.]/warpCount> scripts<[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/scriptCount> signposts<[x:|z y:|z elevation.11 kind. unused:1 arg::|s=kind(0=<>|1=<>|2=<>|3=<>|4=<>)]/signpostCount>]1> mapscripts<[type. pointer<>]!00> connections<[count:: connections<[direction::mapdirections offset:: mapGroup. mapNum. unused:]/count>]1> music:songnames layoutID:data.maps.layouts+1 regionSectionID.data.maps.names+88 cave. weather. mapType. allowBiking. flags.|t|allowEscaping.|allowRunning.|showMapName. floorNum. battleType.]1>]?>]43
data.maps.layouts, 05326C, 05326C, 05328C, 05328C, , , , , , [layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1>]332
data.maps.layouts, , , , , 055194, 055194, 0551A8, 0551A8, , [layout<[width:: height:: borderblock<> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> animation<> attributes<>]1> borderwidth. borderheight. unused:]1>]383
data.maps.layouts, , , , , , , , , 0849CC, [layout<[width:: height:: borderblock<[border:|h]4> blockmap<`blm`> blockdata1<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1> blockdata2<[isCompressed. isSecondary. padding: tileset<> pal<`ucp4:0123456789ABCDEF`> blockset<> attributes<> animation<>]1>]1>]441
@ -246,7 +246,7 @@ data.abilities.pickup.rareitems, , , , , ,
data.abilities.soundproof.moves, 018ABC, 018ABC, 018ABC, 018ABC, 01A67C, 01A67C, 01A690, 01A690, 042F70, [move:data.pokemon.moves.names]!FFFF
data.pokemon.moves.egg, 041B44, 041B44, 041B64, 041B64, 045C50, 045C50, 045C64, 045C64, 0703F0, `egg`
data.pokemon.type.chart, 01CDC8, 01CDC8, 01CDC8, 01CDC8, 01E944, 01E944, 01E958, 01E958, 047134, [attack.data.pokemon.type.names defend.data.pokemon.type.names strength.effectiveness]!FFFF00
data.pokemon.type.holdEffects, 03BCD0, 03BCD0, 03BCD0, 03BCD0, 03EF38, 03EF38, 03EF4C, 03EF4C, 069770, [effect. type.data.pokemon.type.names]data.pokemon.type.holdEffect.length
data.pokemon.type.holdEffects, 03BCD0, 03BCD0, 03BCD0, 03BCD0, 03EF38, 03EF38, 03EF4C, 03EF4C, 069770, [effect.holdeffects type.data.pokemon.type.names]data.pokemon.type.holdEffect.length
data.pokemon.natures.stats, 03FCB4, 03FCB4, 03FCD4, 03FCD4, 0436D8, 0436D8, 0436EC, 0436EC, 06D914, [attack.|z defense.|z speed.|z spAttack.|z spDefense.|z]data.pokemon.natures.names
data.pokemon.swarm, , , , , , , , , 0ED800, [pokemon:data.pokemon.names move1:data.pokemon.moves.names move2:data.pokemon.moves.names move3:data.pokemon.moves.names move4:data.pokemon.moves.names level. location.]5
scripts.moves.effects, 0146E4, 0146E4, 0146E4, 0146E4, 016364, 016364, 016378, 016378, 03E854, [effect<`bse`>]moveeffectoptions
@ -319,6 +319,7 @@ data.battletower.items, 135098, 135098, 1350B8, 1350B8, 0E637C, 0
data.battletower.pokemon.level50, 134F54, 134F54, 134F74, 134F74, 0E6378, 0E6350, 0E638C, 0E6364, , [species:data.pokemon.names heldItem.data.battletower.items flags.|h move1:data.pokemon.moves.names move2:data.pokemon.moves.names move3:data.pokemon.moves.names move4:data.pokemon.moves.names evSpread|b[]battletowerEvFlags nature.data.pokemon.natures.names unused:]300
data.battletower.pokemon.level100, 134EFC, 134EFC, 134F1C, 134F1C, 0E631C, 0E62F4, 0E6330, 0E6308, , [species:data.pokemon.names heldItem.data.battletower.items flags.|h move1:data.pokemon.moves.names move2:data.pokemon.moves.names move3:data.pokemon.moves.names move4:data.pokemon.moves.names evSpread|b[]battletowerEvFlags nature.data.pokemon.natures.names unused:]300
data.battletower.prizes, , , , , 15E444, 15E420, 15E4BC, 15E498, , [item:data.items.stats]15
data.battletower.pokemon.banned, 1220C0, 1220C0, 1220E0, 1220E0, 0E6640, 0E6618, 0E6654, 0E662C, , [species:data.pokemon.names]!FFFF
data.trainers.trainertower.trainers, ,,,, 15DD24, 15DD00, 15DD9C, 15DD78, , [trainer<[id. floor. challengetype. prize. name""11 class. textColor. unused. beforeWord1:|h beforeWord2:|h beforeWord3:|h beforeWord4:|h beforeWord5:|h beforeWord6:|h winWord1:|h winWord2:|h winWord3:|h winWord4:|h winWord5:|h winWord6:|h lostWord1:|h lostWord2:|h lostWord3:|h lostWord4:|h lostWord5:|h lostWord6:|h afterWord1:|h afterWord2:|h afterWord3:|h afterWord4:|h afterWord5:|h afterWord6:|h unused: [species:data.pokemon.names heldItem:data.items.stats move1:data.pokemon.moves.names move2:data.pokemon.moves.names move3:data.pokemon.moves.names move4:data.pokemon.moves.names unknown: hpEv. atkEv. defEv. speedEv. spatkEv. spdefEv. otID::|h IVs::|t|hp::.|atk::.|def::.|spd::.|spatk::.|spdef::.|unused.|2ndAbility. personality:: nickname""11 friendship.]6]1>]32
data.trainers.trainerhill.prizelist, ,,,, ,,,, 1D6718, [prizelist<[prizeoptions<[prize:data.items.stats]6>]10>]2
data.battlefrontier.items, ,,,, ,,,, 163440, [item:data.items.stats]63
@ -375,10 +376,10 @@ graphics.bag.inside1.berry.tilemap, ,,,, 10D7E8, 10D7C0, 10D860, 10D838, , `l
graphics.bag.inside2.palette, ,,,, 13D16C, 13D144, 13D1E4, 13D1BC, , `lzp4:012`
graphics.bag.inside2.tileset, ,,,, 13D12C, 13D104, 13D1A4, 13D17C, , `lzt4|graphics.bag.inside2.palette`
graphics.bag.inside2.tilemap, ,,,, 13D148, 13D120, 13D1C0, 13D198, , `lzm4x32x32|graphics.bag.inside2.tileset`
graphics.bag.inside3.palette, ,,,, 09B108, 09B0DC, 09B11C, 09B0F0, , `lzp4`
graphics.bag.inside3.tileset, ,,,, 09B0B0, 09B084, 09B0C4, 09B098, , `lzt4|graphics.bag.inside3.palette`
graphics.bag.inside3.tilemap1, ,,,, 09B0B8, 09B08C, 09B0CC, 09B0A0, , `lzm4x32x32|graphics.bag.inside3.tileset`
graphics.bag.inside3.tilemap2, ,,,, 09B100, 09B0D4, 09B114, 09B0E8, , `lzm4x32x32|graphics.bag.inside3.tileset`
graphics.bag.pokemart.palette, ,,,, 09B108, 09B0DC, 09B11C, 09B0F0, , `lzp4`
graphics.bag.pokemart.tileset, ,,,, 09B0B0, 09B084, 09B0C4, 09B098, , `lzt4|graphics.bag.pokemart.palette`
graphics.bag.pokemart.tilemap1, ,,,, 09B0B8, 09B08C, 09B0CC, 09B0A0, , `lzm4x32x32|graphics.bag.pokemart.tileset`
graphics.bag.pokemart.tilemap2, ,,,, 09B100, 09B0D4, 09B114, 09B0E8, , `lzm4x32x32|graphics.bag.pokemart.tileset`
graphics.bag.inside.palette.male, 0A35AC, 0A35AC, 0A35CC, 0A35CC, ,,,, , `lzp4`
graphics.bag.inside.palette.female, 0A35BC, 0A35BC, 0A35DC, 0A35DC, ,,,, , `lzp4`
@ -733,6 +734,7 @@ graphics.townmap.annotations.kanto, ,,,, 0C4194,
graphics.townmap.annotations.island1, ,,,, 0C419C, 0C4170, 0C41B0, 0C4184, , [worldmap.data.maps.names+88]graphics.townmap.islands.tilemap1*2-4-4-4-1
graphics.townmap.annotations.island2, ,,,, 0C41A4, 0C4178, 0C41B8, 0C418C, , [worldmap.data.maps.names+88]graphics.townmap.islands.tilemap2*2-4-4-4-1
graphics.townmap.annotations.island3, ,,,, 0C41CC, 0C41A0, 0C41E0, 0C41B4, , [worldmap.data.maps.names+88]graphics.townmap.islands.tilemap3*2-4-4-4-1
graphics.townmap.annotations.hoenn, ,,,,,,,, 1238A8, [worldmap.data.maps.names]graphics.townmap.map.tilemap-1-2-35-47
graphics.credits.trainer.male.palette, , , , , 0F4A1C, 0F49F4, 0F4A94, 0F4A6C, , `ucp4`
graphics.credits.trainer.female.palette, , , , , 0F4A48, 0F4A20, 0F4AC0, 0F4A98, , `ucp4`
@ -891,7 +893,7 @@ data.battlefrontier.battletent.fallarbor.trainers, , , , ,
scripts.fromthumb.safari.end, , , , , 0A0F38, 0A0F0C, 0A0F4C, 0A0F20, 0FC17C, `xse`
scripts.text.names, ,,,, 12DB00, 12DAD8, 12DB78, 12DB50, , [text<"">]
scripts.text.interviews, ,,,, 12CE00, 12CDD8, 12CE78, 12CE50, , [text<"">]
scripts.text.destinations, ,,,, 09D824, 09D7F8, 09D838, 09D80C, , [text<"">]
scripts.text.destinations, ,,,, 09D824, 09D7F8, 09D838, 09D80C, , [text<"">]8
// From Soup
data.statstages.accuracy, 01C578, 01C578, 01C578, 01C578, 01E108, 01E108, 01E11C, 01E11C, 046918, [numerator. divisor. unused:]13

View File

@ -290,7 +290,7 @@ namespace HavenSoft.HexManiac.Core.Models.Map {
var field3 = !isRSE ? "kind:" : "unused:1";
ObjectsFormat = $"[id. graphics.{HardcodeTablesModel.OverworldSprites} {field3} x:|z y:|z elevation.11 moveType. range:|t|x::|y:: trainerType: trainerRangeOrBerryID: script<`xse`> flag:|h padding:]/{ObjectCount}";
WarpsFormat = $"[x:|z y:|z elevation.11 warpID. map. bank.]/{WarpCount}";
ScriptsFormat = $"[x:|z y:|z elevation:11 trigger: index:: script<`xse`>]/{ScriptCount}";
ScriptsFormat = $"[x:|z y:|z elevation:11 trigger:|h index:: script<`xse`>]/{ScriptCount}";
SignpostsFormat = $"[x:|z y:|z elevation.11 kind. unused:1 arg::|h]/{SignpostCount}";
EventsFormat = $"[{ObjectCount}. {WarpCount}. {ScriptCount}. {SignpostCount}. {Objects}<{ObjectsFormat}> {Warps}<{WarpsFormat}> {Scripts}<{ScriptsFormat}> {Signposts}<{SignpostsFormat}>]1";
ConnectionsFormat = "[count:: connections<[direction:: offset:: mapGroup. mapNum. unused:]/count>]1";

View File

@ -85,7 +85,11 @@ namespace HavenSoft.HexManiac.Tests {
"graphics.townmap.map.tileset",
"graphics.text.font.japan.japan2.characters",
"graphics.misc.questionnaire.button.sprite",
"graphics.misc.questionnaire.tileset"
"graphics.misc.questionnaire.tileset",
"graphics.bag.pokemart.palette",
"graphics.bag.pokemart.tileset",
"graphics.bag.pokemart.tilemap1",
"graphics.bag.pokemart.tilemap2"
)) {
return;
}
@ -104,7 +108,11 @@ namespace HavenSoft.HexManiac.Tests {
"graphics.townmap.tileset",
"graphics.questionnaire.button.sprite",
"graphics.overworld.sprites",
"graphics.questionnaire.tileset"
"graphics.questionnaire.tileset",
"graphics.bag.inside3.palette",
"graphics.bag.inside3.tileset",
"graphics.bag.inside3.tilemap1",
"graphics.bag.inside3.tilemap2"
)) return;
if (tomlName == "_0.4.0.toml") {
exemptAddress |= new[] { // legitimate moves: same name, new location