summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSlawter666 <38655737+Slawter666@users.noreply.github.com>2018-10-14 14:26:13 +0100
committerSlawter666 <38655737+Slawter666@users.noreply.github.com>2018-10-14 14:26:13 +0100
commit02609abc8e1fbc8df7746a7063cf53ed2fe3bd69 (patch)
tree5541c9e85036ed6fe00eb1a630bea62c23309910
parent3837e23676deb711a9b658b2ebee9bbc40102a75 (diff)
Updated Dynamic overworld palette system (markdown)
-rw-r--r--Dynamic-overworld-palette-system.md23
1 files changed, 4 insertions, 19 deletions
diff --git a/Dynamic-overworld-palette-system.md b/Dynamic-overworld-palette-system.md
index f96d770..7d9b5a7 100644
--- a/Dynamic-overworld-palette-system.md
+++ b/Dynamic-overworld-palette-system.md
@@ -1,4 +1,4 @@
-For this tutorial we will be editting one function within **src/overworld.c** and three functions within **src/event_object_movement.c** along with adding one new function to make it easier when adding new overworlds, with new palettes.
+For this tutorial we will be editting one function within **src/overworld.c** and three functions within **src/event_object_movement.c** to make it easier when adding new overworlds, with new palettes.
Note that the current implementation breaks the reflection palette system, though for ease of adding new overworlds that should be adapted so it is dynamic as well, rather than requiring explicit reflection palettes.
@@ -167,22 +167,6 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
}
```
### RemoveEventObjectInternal()
-First we need to add a new function, courtesy of ShantyTown.
-```c
-void FreeSpritePaletteIfUnused(u8 paletteNum)
-{
- u8 i;
- u16 tag = GetSpritePaletteTagByPaletteNum(paletteNum);
-
- if (tag != 0xFFFF)
- {
- for (i = 0; i < MAX_SPRITES; i++)
- if (gSprites[i].inUse && gSprites[i].oam.paletteNum == paletteNum)
- return;
- FreeSpritePaletteByTag(tag);
- }
-}
-```
```diff
static void RemoveEventObjectInternal(struct EventObject *eventObject)
{
@@ -193,7 +177,8 @@ static void RemoveEventObjectInternal(struct EventObject *eventObject)
gSprites[eventObject->spriteId].images = &image;
+ paletteNum = gSprites[eventObject->spriteId].oam.paletteNum;
DestroySprite(&gSprites[eventObject->spriteId]);
-+ FreeSpritePaletteIfUnused(paletteNum);
++ FieldEffectFreePaletteIfUnused(paletteNum);
+
}
```
becomes:
@@ -207,7 +192,7 @@ static void RemoveEventObjectInternal(struct EventObject *eventObject)
gSprites[eventObject->spriteId].images = &image;
paletteNum = gSprites[eventObject->spriteId].oam.paletteNum;
DestroySprite(&gSprites[eventObject->spriteId]);
- FreeSpritePaletteIfUnused(paletteNum);
+ FieldEffectFreePaletteIfUnused(paletteNum);
}
```
### sub_808E1B8()