mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-16 19:47:35 +01:00
Merge remote-tracking branch 'pret/master' into RHH/pr/sync/pret_20221216
# Conflicts: # src/data.c # src/data/pokemon_graphics/front_pic_anims.h
This commit is contained in:
commit
6a57dcdc4c
18
.github/calcrom/calcrom.pl
vendored
18
.github/calcrom/calcrom.pl
vendored
@ -1,5 +1,11 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# calcrom.pl <mapfile> [--data]
|
||||||
|
#
|
||||||
|
# mapfile: path to .map file output by LD
|
||||||
|
# data: set to output % breakdown of data
|
||||||
|
|
||||||
use IPC::Cmd qw[ run ];
|
use IPC::Cmd qw[ run ];
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
|
||||||
@ -65,12 +71,13 @@ my $base_cmd = "nm $elffname | awk '{print \$3}' | grep '^[^_].\\{4\\}' | uniq";
|
|||||||
|
|
||||||
# This looks for Unknown_, Unknown_, or sub_, followed by an address. Note that
|
# This looks for Unknown_, Unknown_, or sub_, followed by an address. Note that
|
||||||
# it matches even if stuff precedes the unknown, like sUnknown/gUnknown.
|
# it matches even if stuff precedes the unknown, like sUnknown/gUnknown.
|
||||||
my $undoc_cmd = "grep '[Uu]nknown_[0-9a-fA-F]\\{5,7\\}\\|sub_[0-9a-fA-F]\\{5,7\\}'";
|
my $undoc_regex = "'[Uu]nknown_[0-9a-fA-F]\\{5,7\\}\\|sub_[0-9a-fA-F]\\{5,7\\}'";
|
||||||
|
|
||||||
# This looks for every symbol with an address at the end of it. Some things are
|
# This looks for every symbol with an address at the end of it. Some things are
|
||||||
# given a name based on their type / location, but still have an unknown purpose.
|
# given a name based on their type / location, but still have an unknown purpose.
|
||||||
# For example, FooMap_EventScript_FFFFFFF.
|
# For example, FooMap_EventScript_FFFFFFF.
|
||||||
my $partial_doc_cmd = "grep '_[0-28][0-9a-fA-F]\\{5,7\\}'";
|
# The above may be double counted here, and will need to be filtered out.
|
||||||
|
my $partial_doc_regex = "'_[0-28][0-9a-fA-F]\\{5,7\\}'";
|
||||||
|
|
||||||
my $count_cmd = "wc -l";
|
my $count_cmd = "wc -l";
|
||||||
|
|
||||||
@ -87,7 +94,7 @@ my $total_syms_as_string;
|
|||||||
|
|
||||||
my $undocumented_as_string;
|
my $undocumented_as_string;
|
||||||
(run (
|
(run (
|
||||||
command => "$base_cmd | $undoc_cmd | $count_cmd",
|
command => "$base_cmd | grep $undoc_regex | $count_cmd",
|
||||||
buffer => \$undocumented_as_string,
|
buffer => \$undocumented_as_string,
|
||||||
timeout => 60
|
timeout => 60
|
||||||
))
|
))
|
||||||
@ -95,7 +102,7 @@ my $undocumented_as_string;
|
|||||||
|
|
||||||
my $partial_documented_as_string;
|
my $partial_documented_as_string;
|
||||||
(run (
|
(run (
|
||||||
command => "$base_cmd | $partial_doc_cmd | $count_cmd",
|
command => "$base_cmd | grep $partial_doc_regex | grep -v $undoc_regex | $count_cmd",
|
||||||
buffer => \$partial_documented_as_string,
|
buffer => \$partial_documented_as_string,
|
||||||
timeout => 60
|
timeout => 60
|
||||||
))
|
))
|
||||||
@ -126,9 +133,6 @@ my $total = $src + $asm;
|
|||||||
my $srcPct = sprintf("%.4f", 100 * $src / $total);
|
my $srcPct = sprintf("%.4f", 100 * $src / $total);
|
||||||
my $asmPct = sprintf("%.4f", 100 * $asm / $total);
|
my $asmPct = sprintf("%.4f", 100 * $asm / $total);
|
||||||
|
|
||||||
# partial_documented is double-counting the unknown_* and sub_* symbols.
|
|
||||||
$partial_documented = $partial_documented - $undocumented;
|
|
||||||
|
|
||||||
my $documented = $total_syms - ($undocumented + $partial_documented);
|
my $documented = $total_syms - ($undocumented + $partial_documented);
|
||||||
my $docPct = sprintf("%.4f", 100 * $documented / $total_syms);
|
my $docPct = sprintf("%.4f", 100 * $documented / $total_syms);
|
||||||
my $partialPct = sprintf("%.4f", 100 * $partial_documented / $total_syms);
|
my $partialPct = sprintf("%.4f", 100 * $partial_documented / $total_syms);
|
||||||
|
@ -109,40 +109,6 @@ $(TILESETGFXDIR)/secondary/pacifidlog/tiles.4bpp: %.4bpp: %.png
|
|||||||
$(TILESETGFXDIR)/secondary/sootopolis/tiles.4bpp: %.4bpp: %.png
|
$(TILESETGFXDIR)/secondary/sootopolis/tiles.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 328 -Wnum_tiles
|
$(GFX) $< $@ -num_tiles 328 -Wnum_tiles
|
||||||
|
|
||||||
SOOTOPOLISANIMDIR := $(TILESETGFXDIR)/secondary/sootopolis/anim
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/0.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/0_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/0_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/1.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/1_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/1_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/2.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/2_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/2_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/3.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/3_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/3_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/4.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/4_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/4_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/5.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/5_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/5_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/6.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/6_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/6_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/7.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/7_kyogre.4bpp \
|
|
||||||
$(SOOTOPOLISANIMDIR)/stormy_water/7_groudon.4bpp
|
|
||||||
@cat $^ >$@
|
|
||||||
|
|
||||||
$(TILESETGFXDIR)/secondary/battle_frontier_outside_west/tiles.4bpp: %.4bpp: %.png
|
$(TILESETGFXDIR)/secondary/battle_frontier_outside_west/tiles.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 508 -Wnum_tiles
|
$(GFX) $< $@ -num_tiles 508 -Wnum_tiles
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#define NUM_PALS_TOTAL 13
|
#define NUM_PALS_TOTAL 13
|
||||||
#define MAX_MAP_DATA_SIZE 10240
|
#define MAX_MAP_DATA_SIZE 10240
|
||||||
|
|
||||||
|
#define NUM_TILES_PER_METATILE 8
|
||||||
|
|
||||||
// Map coordinates are offset by 7 when using the map
|
// Map coordinates are offset by 7 when using the map
|
||||||
// buffer because it needs to load sufficient border
|
// buffer because it needs to load sufficient border
|
||||||
// metatiles to fill the player's view (the player has
|
// metatiles to fill the player's view (the player has
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#ifdef NDEBUG
|
#ifdef NDEBUG
|
||||||
#define DebugPrintf(pBuf, ...)
|
#define DebugPrintf(pBuf, ...)
|
||||||
|
#define DebugPrintfLevel(level, pBuf, ...)
|
||||||
#define MgbaOpen()
|
#define MgbaOpen()
|
||||||
#define MgbaClose()
|
#define MgbaClose()
|
||||||
#define AGBPrintInit()
|
#define AGBPrintInit()
|
||||||
@ -29,18 +30,21 @@ void AGBPrintInit(void);
|
|||||||
|
|
||||||
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
|
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
|
||||||
|
|
||||||
#define DebugPrintf(pBuf, ...) MgbaPrintf(MGBA_LOG_INFO, pBuf, __VA_ARGS__)
|
#define DebugPrintf(pBuf, ...) MgbaPrintf(MGBA_LOG_INFO, pBuf, ## __VA_ARGS__)
|
||||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) MgbaAssert(pFile, nLine, pExpression, nStopProgram)
|
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) MgbaAssert(pFile, nLine, pExpression, nStopProgram)
|
||||||
|
#define DebugPrintfLevel(level, pBuf, ...) MgbaPrintf(level, pBuf, ## __VA_ARGS__)
|
||||||
|
|
||||||
#elif (LOG_HANDLER == LOG_HANDLER_NOCASH_PRINT)
|
#elif (LOG_HANDLER == LOG_HANDLER_NOCASH_PRINT)
|
||||||
|
|
||||||
#define DebugPrintf(pBuf, ...) NoCashGBAPrintf(pBuf, __VA_ARGS__)
|
#define DebugPrintf(pBuf, ...) NoCashGBAPrintf(pBuf, ## __VA_ARGS__)
|
||||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) NoCashGBAAssert(pFile, nLine, pExpression, nStopProgram)
|
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) NoCashGBAAssert(pFile, nLine, pExpression, nStopProgram)
|
||||||
|
#define DebugPrintfLevel(level, pBuf, ...) NoCashGBAPrintf(pBuf, ## __VA_ARGS__)
|
||||||
|
|
||||||
#else // Default to AGBPrint
|
#else // Default to AGBPrint
|
||||||
|
|
||||||
#define DebugPrintf(pBuf, ...) AGBPrintf(const char *pBuf, ...)
|
#define DebugPrintf(pBuf, ...) AGBPrintf(pBuf, ## __VA_ARGS__)
|
||||||
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) AGBAssert(pFile, nLine, pExpression, nStopProgram)
|
#define DebugAssert(pFile, nLine, pExpression, nStopProgram) AGBAssert(pFile, nLine, pExpression, nStopProgram)
|
||||||
|
#define DebugPrintfLevel(level, pBuf, ...) AGBPrintf(pBuf, ## __VA_ARGS__)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1977,7 +1977,7 @@ static void SetDecorSelectionMetatiles(struct PlaceDecorationGraphicsDataBuffer
|
|||||||
shape = data->decoration->shape;
|
shape = data->decoration->shape;
|
||||||
for (i = 0; i < sDecorTilemaps[shape].size; i++)
|
for (i = 0; i < sDecorTilemaps[shape].size; i++)
|
||||||
{
|
{
|
||||||
data->tiles[sDecorTilemaps[shape].tiles[i]] = GetMetatile(data->decoration->tiles[sDecorTilemaps[shape].y[i]] * 8 + sDecorTilemaps[shape].x[i]);
|
data->tiles[sDecorTilemaps[shape].tiles[i]] = GetMetatile(data->decoration->tiles[sDecorTilemaps[shape].y[i]] * NUM_TILES_PER_METATILE + sDecorTilemaps[shape].x[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2037,7 +2037,7 @@ static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphics
|
|||||||
SetDecorSelectionMetatiles(data);
|
SetDecorSelectionMetatiles(data);
|
||||||
SetDecorSelectionBoxOamAttributes(data->decoration->shape);
|
SetDecorSelectionBoxOamAttributes(data->decoration->shape);
|
||||||
SetDecorSelectionBoxTiles(data);
|
SetDecorSelectionBoxTiles(data);
|
||||||
CopyPalette(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12);
|
CopyPalette(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||||
LoadSpritePalette(&sSpritePal_PlaceDecoration);
|
LoadSpritePalette(&sSpritePal_PlaceDecoration);
|
||||||
return CreateSprite(&sDecorationSelectorSpriteTemplate, 0, 0, 0);
|
return CreateSprite(&sDecorationSelectorSpriteTemplate, 0, 0, 0);
|
||||||
}
|
}
|
||||||
@ -2093,7 +2093,7 @@ static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u
|
|||||||
SetDecorSelectionMetatiles(&sPlaceDecorationGraphicsDataBuffer);
|
SetDecorSelectionMetatiles(&sPlaceDecorationGraphicsDataBuffer);
|
||||||
SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
|
SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
|
||||||
SetDecorSelectionBoxTiles(&sPlaceDecorationGraphicsDataBuffer);
|
SetDecorSelectionBoxTiles(&sPlaceDecorationGraphicsDataBuffer);
|
||||||
CopyPalette(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * 8) + 7] >> 12);
|
CopyPalette(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * NUM_TILES_PER_METATILE) + 7] >> 12);
|
||||||
sheet.data = sPlaceDecorationGraphicsDataBuffer.image;
|
sheet.data = sPlaceDecorationGraphicsDataBuffer.image;
|
||||||
sheet.size = sDecorShapeSizes[sPlaceDecorationGraphicsDataBuffer.decoration->shape] * TILE_SIZE_4BPP;
|
sheet.size = sDecorShapeSizes[sPlaceDecorationGraphicsDataBuffer.decoration->shape] * TILE_SIZE_4BPP;
|
||||||
sheet.tag = tilesTag;
|
sheet.tag = tilesTag;
|
||||||
|
@ -237,7 +237,7 @@ static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x,
|
|||||||
metatiles = mapLayout->secondaryTileset->metatiles;
|
metatiles = mapLayout->secondaryTileset->metatiles;
|
||||||
metatileId -= NUM_METATILES_IN_PRIMARY;
|
metatileId -= NUM_METATILES_IN_PRIMARY;
|
||||||
}
|
}
|
||||||
DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * 8, offset);
|
DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * NUM_TILES_PER_METATILE, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DrawMetatile(s32 metatileLayerType, const u16 *tiles, u16 offset)
|
static void DrawMetatile(s32 metatileLayerType, const u16 *tiles, u16 offset)
|
||||||
|
@ -808,9 +808,9 @@ static void BuyMenuDrawMapBg(void)
|
|||||||
metatileLayerType = METATILE_LAYER_TYPE_COVERED;
|
metatileLayerType = METATILE_LAYER_TYPE_COVERED;
|
||||||
|
|
||||||
if (metatile < NUM_METATILES_IN_PRIMARY)
|
if (metatile < NUM_METATILES_IN_PRIMARY)
|
||||||
BuyMenuDrawMapMetatile(i, j, mapLayout->primaryTileset->metatiles + metatile * 8, metatileLayerType);
|
BuyMenuDrawMapMetatile(i, j, mapLayout->primaryTileset->metatiles + metatile * NUM_TILES_PER_METATILE, metatileLayerType);
|
||||||
else
|
else
|
||||||
BuyMenuDrawMapMetatile(i, j, mapLayout->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType);
|
BuyMenuDrawMapMetatile(i, j, mapLayout->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * NUM_TILES_PER_METATILE), metatileLayerType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -484,14 +484,14 @@ const u16 *const gTilesetAnims_BikeShop_BlinkingLights[] = {
|
|||||||
gTilesetAnims_BikeShop_BlinkingLights_Frame1
|
gTilesetAnims_BikeShop_BlinkingLights_Frame1
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/0.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/0_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/0_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/1.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/1_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/1_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/2.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/2_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/2_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame3[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/3.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame3[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/3_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/3_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/4.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/4_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/4_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame5[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/5.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame5[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/5_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/5_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame6[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/6.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame6[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/6_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/6_groudon.4bpp");
|
||||||
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame7[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/7.4bpp");
|
const u16 gTilesetAnims_Sootopolis_StormyWater_Frame7[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/7_kyogre.4bpp", "data/tilesets/secondary/sootopolis/anim/stormy_water/7_groudon.4bpp");
|
||||||
const u16 tileset_anims_space_8[16] = {};
|
const u16 tileset_anims_space_8[16] = {};
|
||||||
|
|
||||||
const u16 gTilesetAnims_Unused1_Frame0[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp");
|
const u16 gTilesetAnims_Unused1_Frame0[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp");
|
||||||
|
Loading…
Reference in New Issue
Block a user