summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2018-01-11 13:51:45 -0600
committerGitHub <noreply@github.com>2018-01-11 13:51:45 -0600
commit2b56f43fce75871f2be993d43b483ceefd0bfc0f (patch)
tree6fefa6a95a940c731ce7e551d1bc5c00a2626db0
parenta51b95150ba86a3982f613886471626f742aeacd (diff)
parente7672a1aeb5e42d6f4e416ede9f6220122d11743 (diff)
Merge branch 'master' into assert
-rw-r--r--.travis.yml16
-rw-r--r--Makefile281
-rw-r--r--asm/battle_1.s2
-rw-r--r--asm/battle_9.s2
-rw-r--r--asm/battle_anim_812C144.s40
-rw-r--r--asm/battle_anim_813F0F4.s2
-rwxr-xr-xasm/battle_intro.s50
-rwxr-xr-xasm/bug.s825
-rw-r--r--asm/contest_ai.s2
-rw-r--r--asm/contest_effect.s2
-rw-r--r--asm/contest_link_80C2020.s30
-rw-r--r--asm/contest_link_80C857C.s2
-rwxr-xr-xasm/current.s2
-rw-r--r--asm/cute_sketch.s2
-rwxr-xr-xasm/dark.s42
-rwxr-xr-xasm/dragon.s1214
-rwxr-xr-xasm/fight.s14
-rwxr-xr-xasm/flying.s2
-rwxr-xr-xasm/ghost.s8
-rwxr-xr-xasm/ground.s66
-rwxr-xr-xasm/ice.s2
-rw-r--r--asm/m4a_3.s2
-rwxr-xr-xasm/normal.s34
-rwxr-xr-xasm/pc_screen_effect.s2
-rwxr-xr-xasm/poison.s364
-rw-r--r--asm/pokedex_area_screen.s2
-rw-r--r--asm/pokedex_cry_screen.s2
-rw-r--r--asm/pokemon_item_effect.s2
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/pokenav.s24
-rwxr-xr-xasm/psychic.s16
-rwxr-xr-xasm/rock.s12
-rwxr-xr-xasm/unk_text_8095904.s2
-rwxr-xr-xasm/water.s46
-rwxr-xr-xasm/wisp_fire.s678
-rw-r--r--common_syms/scanline_effect.txt2
-rw-r--r--config.mk44
-rw-r--r--data-de/event_scripts.s4
-rw-r--r--data-de/strings2.s2
-rw-r--r--data/battle_ai_scripts.s4
-rw-r--r--data/battle_anim.s2
-rw-r--r--data/battle_anim_80A7E7C.s2
-rw-r--r--data/battle_anim_80CA710.s2
-rw-r--r--data/battle_anim_812C144.s2
-rw-r--r--data/battle_anim_813F0F4.s2
-rw-r--r--data/battle_anim_scripts.s4
-rw-r--r--data/battle_interface.s2
-rw-r--r--data/battle_moves.s2
-rw-r--r--data/battle_scripts_1.s4
-rw-r--r--data/battle_scripts_2.s4
-rw-r--r--data/contest.s2
-rw-r--r--data/contest_ai.s2
-rw-r--r--data/contest_ai_scripts.s4
-rw-r--r--data/contest_effect.s2
-rw-r--r--data/contest_link_80C2020.s2
-rw-r--r--data/cute_sketch.s2
-rw-r--r--data/data2a.s2
-rw-r--r--data/data2b.s2
-rw-r--r--data/data_8393054.s2
-rw-r--r--data/easy_chat.s2
-rw-r--r--data/event_scripts.s4
-rw-r--r--data/field_effect_scripts.s4
-rw-r--r--data/map_events.s2
-rw-r--r--data/maps.s2
-rwxr-xr-xdata/pc_screen_effect.s2
-rw-r--r--data/pokedex_area_screen.s2
-rw-r--r--data/pokedex_cry_screen.s2
-rw-r--r--data/pokemon_storage_system.s2
-rw-r--r--data/pokenav.s2
-rw-r--r--data/roulette.s2
-rw-r--r--data/sound_data.s4
-rw-r--r--data/strings2.s2
-rw-r--r--data/tilesets.s2
-rw-r--r--fonts.mk2
-rw-r--r--include/MPlayDef.s (renamed from sound/MPlayDef.s)0
-rw-r--r--include/data2.h4
-rw-r--r--include/macros.inc (renamed from asm/macros.inc)12
-rw-r--r--include/macros/asm.inc (renamed from asm/macros/asm.inc)0
-rw-r--r--include/macros/battle_ai_script.inc (renamed from asm/macros/battle_ai_script.inc)0
-rw-r--r--include/macros/battle_anim.inc (renamed from asm/macros/battle_anim.inc)0
-rw-r--r--include/macros/battle_script.inc (renamed from asm/macros/battle_script.inc)0
-rw-r--r--include/macros/contest_ai_script.inc (renamed from asm/macros/contest_ai_script.inc)0
-rw-r--r--include/macros/ec.inc (renamed from asm/macros/ec.inc)0
-rw-r--r--include/macros/event.inc (renamed from asm/macros/event.inc)0
-rw-r--r--include/macros/field_effect_script.inc (renamed from asm/macros/field_effect_script.inc)0
-rw-r--r--include/macros/function.inc (renamed from asm/macros/function.inc)0
-rw-r--r--include/macros/m4a.inc (renamed from asm/macros/m4a.inc)0
-rw-r--r--include/macros/map.inc (renamed from asm/macros/map.inc)0
-rw-r--r--include/macros/movement.inc (renamed from asm/macros/movement.inc)0
-rw-r--r--include/macros/music_voice.inc (renamed from asm/macros/music_voice.inc)0
-rw-r--r--include/macros/pokemon_data.inc (renamed from asm/macros/pokemon_data.inc)0
-rw-r--r--include/scanline_effect.h48
-rw-r--r--include/unknown_task.h42
-rw-r--r--ld_script.txt19
-rw-r--r--misc.mk284
-rw-r--r--override-de.mk10
-rw-r--r--src/battle/anim/bug.c302
-rwxr-xr-xsrc/battle/anim/dark.c138
-rwxr-xr-xsrc/battle/anim/dragon.c275
-rwxr-xr-xsrc/battle/anim/draw.c36
-rw-r--r--src/battle/anim/poison.c140
-rw-r--r--src/battle/anim/wisp_fire.c196
-rw-r--r--src/battle/battle_2.c44
-rw-r--r--src/battle/battle_4.c4
-rw-r--r--src/battle/battle_controller_player.c4
-rw-r--r--src/battle/battle_transition.c172
-rw-r--r--src/battle/reshow_battle_screen.c12
-rw-r--r--src/contest.c18
-rw-r--r--src/crt0.s (renamed from asm/crt0.s)0
-rw-r--r--src/debug/matsuda_debug_menu.c18
-rw-r--r--src/easy_chat_1.c12
-rw-r--r--src/easy_chat_2.c4
-rw-r--r--src/engine/main.c4
-rw-r--r--src/engine/main_menu.c8
-rw-r--r--src/engine/option_menu.c4
-rw-r--r--src/engine/reset_rtc_screen.c6
-rw-r--r--src/engine/trainer_card.c32
-rw-r--r--src/field/diploma.c4
-rw-r--r--src/field/field_screen_effect.c24
-rw-r--r--src/field/item_menu.c4
-rw-r--r--src/field/overworld.c12
-rw-r--r--src/field/party_menu.c4
-rw-r--r--src/field/pokeblock.c4
-rw-r--r--src/field/shop.c4
-rw-r--r--src/field/start_menu.c6
-rw-r--r--src/field/starter_choose.c4
-rw-r--r--src/field/use_pokeblock.c4
-rw-r--r--src/field/wallclock.c4
-rw-r--r--src/libs/libagbsyscall.s (renamed from asm/libagbsyscall.s)2
-rw-r--r--src/libs/libgcnmultiboot.s (renamed from asm/libgcnmultiboot.s)2
-rw-r--r--src/libs/m4a_1.s (renamed from asm/m4a_1.s)2
-rw-r--r--src/pokemon/mail.c4
-rw-r--r--src/pokemon/pokedex.c6
-rw-r--r--src/pokemon/pokemon_summary_screen.c24
-rw-r--r--src/pokenav_before.c6
-rw-r--r--src/rom_8077ABC.c4
-rw-r--r--src/roulette.c4
-rw-r--r--src/scanline_effect.c261
-rw-r--r--src/scene/cable_car.c4
-rw-r--r--src/scene/contest_painting.c4
-rw-r--r--src/scene/evolution_scene.c32
-rw-r--r--src/scene/hall_of_fame.c4
-rw-r--r--src/scene/intro.c4
-rwxr-xr-xsrc/scene/intro_credits_graphics.c2
-rw-r--r--src/scene/title_screen.c8
-rw-r--r--src/unknown_task.c235
-rw-r--r--sym_bss.txt2
-rw-r--r--sym_common.txt28
-rw-r--r--sym_ewram.txt7
-rw-r--r--tilesets.mk216
150 files changed, 2315 insertions, 4400 deletions
diff --git a/.travis.yml b/.travis.yml
index 04b2597b6..9a196819b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,12 +25,12 @@ matrix:
env: _="Build"
script:
- ./build_tools.sh
- - make -j2 compare_ruby
- - make -j2 compare_ruby_rev1
- - make -j2 compare_ruby_rev2
- - make -j2 compare_sapphire
- - make -j2 compare_sapphire_rev1
- - make -j2 compare_sapphire_rev2
+ - make -j2 ruby
+ - make -j2 ruby_rev1
+ - make -j2 ruby_rev2
+ - make -j2 sapphire
+ - make -j2 sapphire_rev1
+ - make -j2 sapphire_rev2
- os: linux
env: _="Formatting"
addons:
@@ -53,7 +53,7 @@ matrix:
- rsync -avhI graphics-de/ graphics/
script:
- ./build_tools.sh
- - make -j2 compare_ruby_de
- - make -j2 compare_sapphire_de
+ - make -j2 ruby_de
+ - make -j2 sapphire_de
allow_failures:
- env: _="Formatting"
diff --git a/Makefile b/Makefile
index 9aff29fc4..e7aad1885 100644
--- a/Makefile
+++ b/Makefile
@@ -1,73 +1,150 @@
-SHELL := /bin/bash -o pipefail
-AS := $(DEVKITARM)/bin/arm-none-eabi-as
-ASFLAGS := -mcpu=arm7tdmi
+include config.mk
-CC1 := tools/agbcc/bin/agbcc
-override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
-CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
-CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs
+#### Tools ####
-LD := $(DEVKITARM)/bin/arm-none-eabi-ld
+SHELL := /bin/bash -o pipefail
+AS := $(DEVKITARM)/bin/arm-none-eabi-as
+CC1 := tools/agbcc/bin/agbcc
+CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
+LD := $(DEVKITARM)/bin/arm-none-eabi-ld
+OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
+SHA1SUM := sha1sum -c
+GBAGFX := tools/gbagfx/gbagfx
+RSFONT := tools/rsfont/rsfont
+AIF2PCM := tools/aif2pcm/aif2pcm
+MID2AGB := tools/mid2agb/mid2agb
+PREPROC := tools/preproc/preproc
+SCANINC := tools/scaninc/scaninc
+RAMSCRGEN := tools/ramscrgen/ramscrgen
-OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
+ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(LANGUAGE)=1
+CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
+CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(VERSION) -D REVISION=$(REVISION) -D $(LANGUAGE)
+
+
+#### Files ####
+
+ROM := poke$(BUILD_NAME).gba
+MAP := $(ROM:%.gba=%.map)
+
+SUBDIRS := \
+ sound \
+ sound/songs \
+ asm \
+ data \
+ src \
+ src/battle \
+ src/battle/anim \
+ src/field \
+ src/debug \
+ src/scene \
+ src/pokemon \
+ src/engine \
+ src/libs
+BUILD_DIR := build/$(BUILD_NAME)
+
+C_SOURCES := $(foreach dir, $(SUBDIRS), $(wildcard $(dir)/*.c))
+ASM_SOURCES := $(foreach dir, $(SUBDIRS), $(wildcard $(dir)/*.s))
+
+C_OBECTS := $(addprefix $(BUILD_DIR)/, $(C_SOURCES:%.c=%.o))
+ASM_OBJECTS := $(addprefix $(BUILD_DIR)/, $(ASM_SOURCES:%.s=%.o))
+ALL_OBJECTS := $(C_OBJECTS) $(ASM_OBJECTS)
-LIBGCC := tools/agbcc/lib/libgcc.a
LIBC := tools/agbcc/lib/libc.a
+LIBGCC := tools/agbcc/lib/libgcc.a
-SHA1 := sha1sum -c
+LD_SCRIPT := $(BUILD_DIR)/ld_script.ld
-GFX := tools/gbagfx/gbagfx
-AIF := tools/aif2pcm/aif2pcm
-MID := tools/mid2agb/mid2agb
-SCANINC := tools/scaninc/scaninc
-PREPROC := tools/preproc/preproc
-RAMSCRGEN := tools/ramscrgen/ramscrgen
+# Special configurations required for lib files
+%src/libs/siirtc.o: CC1FLAGS := -mthumb-interwork
+%src/libs/agb_flash.o: CC1FLAGS := -O1 -mthumb-interwork
+%src/libs/agb_flash_1m.o: CC1FLAGS := -O1 -mthumb-interwork
+%src/libs/agb_flash_mx.o: CC1FLAGS := -O1 -mthumb-interwork
+%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/libisagbprn.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/libisagbprn.o: CFLAGS := -mthumb-interwork
-REVISION := 0
-VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de sapphire_de
+#### Main Rules ####
-# Clear the default suffixes.
-.SUFFIXES:
+# Disable dependency scanning when NODEP is used for quick building
+ifeq ($(NODEP),)
+ $(BUILD_DIR)/src/%.o: C_FILE = $(*D)/$(*F).c
+ $(BUILD_DIR)/src/%.o: C_DEP = $(shell $(SCANINC) -I include $(wildcard $(C_FILE:$(BUILD_DIR)/=)))
+ $(BUILD_DIR)/asm/%.o: ASM_DEP = $(shell $(SCANINC) asm/$(*F).s)
+ $(BUILD_DIR)/data/%.o: ASM_DEP = $(shell $(SCANINC) data/$(*F).s)
+endif
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
+# Clear the default suffixes
+.SUFFIXES:
+# Don't delete intermediate files
+.SECONDARY:
-.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz %.rl %.pcm %.bin sound/direct_sound_samples/cry_%.bin
+# Create build subdirectories
+$(shell mkdir -p $(addprefix $(BUILD_DIR)/, $(SUBDIRS)))
-.PHONY: all clean tidy all_versions compare compare_all \
-$(VERSIONS) $(VERSIONS:%=compare_%)
+all: $(ROM)
+ifeq ($(COMPARE),1)
+ @$(SHA1SUM) $(BUILD_NAME).sha1
+endif
+clean: tidy
+ $(RM) sound/direct_sound_samples/*.bin
+ $(RM) $(ALL_OBJECTS)
+ find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} +
-$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle{,/anim},/field,/debug,/scene,/pokemon,/engine,/libs}}))
+ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de
+tidy:
+ $(RM) $(ALL_BUILDS:%=poke%{.gba,.elf,.map})
+ $(RM) -r build
-C_SRCS := $(shell find src -iname "*.c")
-ASM_SRCS := $(wildcard asm/*.s)
-DATA_ASM_SRCS := $(wildcard data/*.s)
+%.gba: %.elf
+ $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
-SONG_SRCS := $(wildcard sound/songs/*.s)
-SONG_OBJS := $(SONG_SRCS:%.s=%.o)
+%.elf: $(LD_SCRIPT) $(ALL_OBJECTS)
+ cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ ../../$(LIBGCC) ../../$(LIBC)
-all: ruby
- @:
+$(LD_SCRIPT): $(BUILD_DIR)/sym_bss.ld $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld
+ cd $(BUILD_DIR) && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" >ld_script.ld
+$(BUILD_DIR)/sym_bss.ld: sym_bss.txt
+ cd $(BUILD_DIR) && ../../$(RAMSCRGEN) .bss ../../sym_bss.txt $(LANGUAGE) >sym_bss.ld
+$(BUILD_DIR)/sym_common.ld: sym_common.txt $(C_OBECTS) $(wildcard common_syms/*.txt)
+ cd $(BUILD_DIR) && ../../$(RAMSCRGEN) COMMON ../../sym_common.txt $(LANGUAGE) -c src,../../common_syms >sym_common.ld
+$(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt
+ cd $(BUILD_DIR) && ../../$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $(LANGUAGE) >sym_ewram.ld
-all_versions: $(VERSIONS)
- @:
+$(BUILD_DIR)/%.o: %.c $$(C_DEP)
+ $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i
+ $(PREPROC) $(BUILD_DIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(BUILD_DIR)/$*.s
+ @printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s
+ @$(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s
-# For contributors to make sure a change didn't affect the contents of the ROM.
-compare: compare_ruby
-compare_all: $(VERSIONS:%=compare_%)
+# Only .s files in data need preproc
+$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP)
+ $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
-clean: tidy
- rm -f sound/direct_sound_samples/*.bin
- rm -f $(SONG_OBJS)
- find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} +
+$(BUILD_DIR)/%.o: %.s $$(ASM_DEP)
+ $(AS) $(ASFLAGS) $< -o $@
+
+# "friendly" target names for convenience sake
+ruby: ; @$(MAKE) --no-print-directory VERSION=RUBY
+ruby_rev1: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=1
+ruby_rev2: ; @$(MAKE) --no-print-directory VERSION=RUBY REVISION=2
+sapphire: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE
+sapphire_rev1: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=1
+sapphire_rev2: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE REVISION=2
+ruby_de: ; @$(MAKE) --no-print-directory VERSION=RUBY LANGUAGE=GERMAN
+sapphire_de: ; @$(MAKE) --no-print-directory VERSION=SAPPHIRE LANGUAGE=GERMAN
-tidy:
- rm -f $(VERSIONS:%=poke%{.gba,.elf,.map})
- rm -r build/*
+
+#### Graphics Rules ####
+
+GFX_OPTS :=
include castform.mk
include tilesets.mk
@@ -75,110 +152,22 @@ include fonts.mk
include misc.mk
include override.mk
-%.s: ;
-%.png: ;
-%.pal: ;
-%.aif: ;
-
-%.1bpp: %.png ; $(GFX) $< $@
-%.4bpp: %.png ; $(GFX) $< $@
-%.8bpp: %.png ; $(GFX) $< $@
-%.gbapal: %.pal ; $(GFX) $< $@
-%.gbapal: %.png ; $(GFX) $< $@
-%.lz: % ; $(GFX) $< $@
-%.rl: % ; $(GFX) $< $@
-sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(AIF) $< $@ --compress
-%.bin: %.aif ; $(AIF) $< $@
-sound/songs/%.s: sound/songs/%.mid
- cd $(@D) && ../../$(MID) $(<F)
+%.1bpp: %.png ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.4bpp: %.png ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.8bpp: %.png ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.gbapal: %.pal ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.gbapal: %.png ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.lz: % ; $(GBAGFX) $< $@ $(GFX_OPTS)
+%.rl: % ; $(GBAGFX) $< $@ $(GFX_OPTS)
-%src/libs/siirtc.o: CFLAGS := -mthumb-interwork
-%src/libs/agb_flash.o: CFLAGS := -O -mthumb-interwork
-%src/libs/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
-%src/libs/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
+#### Sound Rules ####
-%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
+sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif
+ $(AIF2PCM) $< $@ --compress
-%src/libs/libisagbprn.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/libs/libisagbprn.o: CFLAGS := -mthumb-interwork
-
-$(SONG_OBJS): %.o: %.s
- $(AS) $(ASFLAGS) -I sound -o $@ $<
-
-
-define VERSION_RULES
+sound/%.bin: sound/%.aif
+ $(AIF2PCM) $< $@
-$1_C_OBJS := $$(C_SRCS:%.c=build/$1/%.o)
-$1_ASM_OBJS := $$(ASM_SRCS:%.s=build/$1/%.o)
-$1_DATA_ASM_OBJS := $$(DATA_ASM_SRCS:%.s=build/$1/%.o)
-
-ifeq ($$(NODEP),)
-build/$1/src/%.o: c_path = $$(*D)/$$(*F).c
-build/$1/src/%.o: c_dep = $$(shell $$(SCANINC) -I include $$(wildcard $$(c_path:build/$1/=)))
-build/$1/asm/%.o: asm_dep = $$(shell $$(SCANINC) asm/$$(*F).s)
-build/$1/data/%.o: asm_dep = $$(shell $$(SCANINC) data/$$(*F).s)
-endif
-
-$1_OBJS := $$($1_C_OBJS) $$($1_ASM_OBJS) $$($1_DATA_ASM_OBJS) $$(SONG_OBJS)
-$1_OBJS_REL := $$($1_OBJS:build/$1/%=%)
-$1_OBJS_REL := $$($1_OBJS_REL:sound/%=../../sound/%)
-
-$$($1_C_OBJS): VERSION := $2
-$$($1_C_OBJS): REVISION := $3
-$$($1_C_OBJS): LANGUAGE := $4
-build/$1/%.o : %.c $$$$(c_dep)
- @$$(CPP) $$(CPPFLAGS) -D $$(VERSION) -D REVISION=$$(REVISION) -D $$(LANGUAGE) $$< -o build/$1/$$*.i
- @$$(PREPROC) build/$1/$$*.i charmap.txt | $$(CC1) $$(CFLAGS) -o build/$1/$$*.s
- @printf ".text\n\t.align\t2, 0\n" >> build/$1/$$*.s
- $$(AS) $$(ASFLAGS) -o $$@ build/$1/$$*.s
-
-$$($1_ASM_OBJS): VERSION := $2
-$$($1_ASM_OBJS): REVISION := $3
-$$($1_ASM_OBJS): LANGUAGE := $4
-build/$1/asm/%.o: asm/%.s $$$$(asm_dep)
- $$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) --defsym $$(LANGUAGE)=1 -o $$@ $$<
-
-$$($1_DATA_ASM_OBJS): VERSION := $2
-$$($1_DATA_ASM_OBJS): REVISION := $3
-$$($1_DATA_ASM_OBJS): LANGUAGE := $4
-build/$1/data/%.o: data/%.s $$$$(asm_dep)
- $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) --defsym $$(VERSION)=1 --defsym REVISION=$$(REVISION) --defsym $$(LANGUAGE)=1 -o $$@
-
-build/$1/sym_bss.ld: LANGUAGE := $4
-build/$1/sym_bss.ld: sym_bss.txt
- cd build/$1 && ../../$$(RAMSCRGEN) .bss ../../sym_bss.txt $$(LANGUAGE) >sym_bss.ld
-
-build/$1/sym_common.ld: LANGUAGE := $4
-build/$1/sym_common.ld: sym_common.txt $$($1_C_OBJS) $$(wildcard common_syms/*.txt)
- cd build/$1 && ../../$$(RAMSCRGEN) COMMON ../../sym_common.txt $$(LANGUAGE) -c src,../../common_syms >sym_common.ld
-
-build/$1/sym_ewram.ld: LANGUAGE := $4
-build/$1/sym_ewram.ld: sym_ewram.txt
- cd build/$1 && ../../$$(RAMSCRGEN) ewram_data ../../sym_ewram.txt $$(LANGUAGE) >sym_ewram.ld
-
-build/$1/ld_script.ld: ld_script.txt build/$1/sym_bss.ld build/$1/sym_common.ld build/$1/sym_ewram.ld
- cd build/$1 && sed -f ../../ld_script.sed ../../ld_script.txt | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" >ld_script.ld
-
-poke$1.elf: build/$1/ld_script.ld $$($1_OBJS)
- cd build/$1 && $$(LD) -T ld_script.ld -Map ../../poke$1.map -o ../../$$@ $$($1_OBJS_REL) ../../$$(LIBGCC) ../../$$(LIBC)
-
-poke$1.gba: %.gba: %.elf
- $$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $$< $$@
-
-compare_$1: poke$1.gba
- @$$(SHA1) $1.sha1
-
-$1: poke$1.gba
- @:
-endef
-
-$(eval $(call VERSION_RULES,ruby,RUBY,0,ENGLISH))
-$(eval $(call VERSION_RULES,ruby_rev1,RUBY,1,ENGLISH))
-$(eval $(call VERSION_RULES,ruby_rev2,RUBY,2,ENGLISH))
-$(eval $(call VERSION_RULES,sapphire,SAPPHIRE,0,ENGLISH))
-$(eval $(call VERSION_RULES,sapphire_rev1,SAPPHIRE,1,ENGLISH))
-$(eval $(call VERSION_RULES,sapphire_rev2,SAPPHIRE,2,ENGLISH))
-$(eval $(call VERSION_RULES,ruby_de,RUBY,0,GERMAN))
-$(eval $(call VERSION_RULES,sapphire_de,SAPPHIRE,0,GERMAN))
+sound/songs/%.s: sound/songs/%.mid
+ cd $(@D) && ../../$(MID2AGB) $(<F)
diff --git a/asm/battle_1.s b/asm/battle_1.s
index da604c6b6..980bd6a65 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -1,6 +1,6 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/battle_9.s b/asm/battle_9.s
index b86914ca6..fc4cbcf4b 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index 02eec98ec..03ffc0eda 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1752,7 +1752,7 @@ _0812CE70:
ldrsh r0, [r5, r6]
cmp r1, r0
bgt _0812CEA6
- ldr r4, _0812CEB0 @ =gUnknown_03004DE0
+ ldr r4, _0812CEB0 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r4
@@ -1777,7 +1777,7 @@ _0812CEA6:
ldr r0, _0812CEB4 @ =REG_BG1HOFS
b _0812CEBA
.align 2, 0
-_0812CEB0: .4byte gUnknown_03004DE0
+_0812CEB0: .4byte gScanlineEffectRegBuffers
_0812CEB4: .4byte REG_BG1HOFS
_0812CEB8:
ldr r0, _0812CEE4 @ =REG_BG2HOFS
@@ -1794,7 +1794,7 @@ _0812CEBA:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _0812CEEC @ =sub_812CEF0
str r0, [r5]
add sp, 0xC
@@ -1889,7 +1889,7 @@ _0812CF74:
ldrsh r0, [r4, r2]
cmp r1, r0
bge _0812CFA8
- ldr r5, _0812D000 @ =gUnknown_03004DE0
+ ldr r5, _0812D000 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1917,7 +1917,7 @@ _0812CFA8:
ldrsh r0, [r4, r2]
cmp r1, r0
bgt _0812CFDC
- ldr r5, _0812D000 @ =gUnknown_03004DE0
+ ldr r5, _0812D000 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1946,7 +1946,7 @@ _0812CFDC:
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0812CFF2
- ldr r1, _0812D004 @ =gUnknown_03004DC0
+ ldr r1, _0812D004 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_0812CFF2:
@@ -1957,8 +1957,8 @@ _0812CFF8:
pop {r0}
bx r0
.align 2, 0
-_0812D000: .4byte gUnknown_03004DE0
-_0812D004: .4byte gUnknown_03004DC0
+_0812D000: .4byte gScanlineEffectRegBuffers
+_0812D004: .4byte gScanlineEffect
thumb_func_end sub_812CEF0
thumb_func_start sub_812D008
@@ -6545,7 +6545,7 @@ _0812F3EE:
ldrh r3, [r0]
movs r7, 0
movs r2, 0
- ldr r6, _0812F468 @ =gUnknown_03004DE0
+ ldr r6, _0812F468 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r6
@@ -6586,7 +6586,7 @@ _0812F3FE:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _0812F470 @ =sub_812F474
str r0, [r4]
add sp, 0xC
@@ -6599,7 +6599,7 @@ _0812F458: .4byte REG_BLDCNT
_0812F45C: .4byte 0x00003f44
_0812F460: .4byte gBattle_BG2_X
_0812F464: .4byte gBattle_BG2_Y
-_0812F468: .4byte gUnknown_03004DE0
+_0812F468: .4byte gScanlineEffectRegBuffers
_0812F46C: .4byte 0xa6600001
_0812F470: .4byte sub_812F474
thumb_func_end sub_812F314
@@ -6711,7 +6711,7 @@ _0812F4EA:
ldrsh r0, [r6, r3]
cmp r1, r0
ble _0812F60A
- ldr r0, _0812F660 @ =gUnknown_03004DC0
+ ldr r0, _0812F660 @ =gScanlineEffect
mov r10, r0
ldr r1, [sp, 0x4]
lsls r0, r1, 16
@@ -6732,7 +6732,7 @@ _0812F55A:
subs r0, r1
lsls r0, 7
adds r2, r0
- ldr r0, _0812F664 @ =gUnknown_03004DE0
+ ldr r0, _0812F664 @ =gScanlineEffectRegBuffers
adds r2, r0
lsls r4, 16
asrs r4, 16
@@ -6750,7 +6750,7 @@ _0812F55A:
subs r0, r1
lsls r0, 7
adds r3, r0
- ldr r1, _0812F664 @ =gUnknown_03004DE0
+ ldr r1, _0812F664 @ =gScanlineEffectRegBuffers
adds r3, r1
lsls r1, r7, 16
asrs r1, 16
@@ -6814,7 +6814,7 @@ _0812F60A:
lsls r1, r2, 17
cmp r1, 0
blt _0812F636
- ldr r4, _0812F664 @ =gUnknown_03004DE0
+ ldr r4, _0812F664 @ =gScanlineEffectRegBuffers
ldr r7, [sp, 0x4]
lsls r0, r7, 16
asrs r0, 16
@@ -6856,8 +6856,8 @@ _0812F636:
strh r0, [r6, 0xE]
b _0812F676
.align 2, 0
-_0812F660: .4byte gUnknown_03004DC0
-_0812F664: .4byte gUnknown_03004DE0
+_0812F660: .4byte gScanlineEffect
+_0812F664: .4byte gScanlineEffectRegBuffers
_0812F668: .4byte gSineTable
_0812F66C: .4byte 0xffff0000
_0812F670:
@@ -6898,14 +6898,14 @@ _0812F6A6:
asrs r0, 16
cmp r0, 0xC
ble _0812F712
- ldr r1, _0812F6C0 @ =gUnknown_03004DC0
+ ldr r1, _0812F6C0 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0
strh r0, [r6, 0xC]
b _0812F700
.align 2, 0
-_0812F6C0: .4byte gUnknown_03004DC0
+_0812F6C0: .4byte gScanlineEffect
_0812F6C4:
ldrh r0, [r6, 0xC]
adds r0, 0x1
diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s
index fb9c25a82..ccb4854af 100644
--- a/asm/battle_anim_813F0F4.s
+++ b/asm/battle_anim_813F0F4.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/battle_intro.s b/asm/battle_intro.s
index 4bfcf42fb..5b29f56a4 100755
--- a/asm/battle_intro.s
+++ b/asm/battle_intro.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -299,9 +299,9 @@ _080E45E6:
strh r0, [r1, 0xC]
_080E45FE:
movs r3, 0
- ldr r5, _080E46A0 @ =gUnknown_03004DC0
+ ldr r5, _080E46A0 @ =gScanlineEffect
mov r9, r5
- ldr r7, _080E46A4 @ =gUnknown_03004DE0
+ ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers
mov r6, r9
adds r5, r1, 0
_080E460A:
@@ -319,8 +319,8 @@ _080E460A:
ble _080E460A
cmp r3, 0x9F
bgt _080E464E
- ldr r7, _080E46A4 @ =gUnknown_03004DE0
- ldr r6, _080E46A0 @ =gUnknown_03004DC0
+ ldr r7, _080E46A4 @ =gScanlineEffectRegBuffers
+ ldr r6, _080E46A0 @ =gScanlineEffect
ldr r1, _080E46A8 @ =gTasks
mov r2, r12
adds r0, r2, r4
@@ -377,8 +377,8 @@ _080E4690: .4byte gBattle_BG1_Y
_080E4694: .4byte 0x0000ffc8
_080E4698: .4byte gBattle_WIN0V
_080E469C: .4byte 0xfffffc04
-_080E46A0: .4byte gUnknown_03004DC0
-_080E46A4: .4byte gUnknown_03004DE0
+_080E46A0: .4byte gScanlineEffect
+_080E46A4: .4byte gScanlineEffectRegBuffers
_080E46A8: .4byte gTasks
_080E46AC: .4byte 0x0600e000
_080E46B0: .4byte 0x05000200
@@ -669,9 +669,9 @@ _080E48CC:
strh r0, [r1, 0xC]
_080E48E0:
movs r3, 0
- ldr r4, _080E4978 @ =gUnknown_03004DC0
+ ldr r4, _080E4978 @ =gScanlineEffect
mov r8, r4
- ldr r0, _080E497C @ =gUnknown_03004DE0
+ ldr r0, _080E497C @ =gScanlineEffectRegBuffers
mov r12, r0
mov r7, r8
adds r4, r1, 0
@@ -690,9 +690,9 @@ _080E48EE:
ble _080E48EE
cmp r3, 0x9F
bgt _080E4932
- ldr r1, _080E497C @ =gUnknown_03004DE0
+ ldr r1, _080E497C @ =gScanlineEffectRegBuffers
mov r12, r1
- ldr r7, _080E4978 @ =gUnknown_03004DC0
+ ldr r7, _080E4978 @ =gScanlineEffect
ldr r1, _080E4980 @ =gTasks
adds r0, r6, r5
lsls r0, 3
@@ -745,8 +745,8 @@ _080E4932:
.align 2, 0
_080E4970: .4byte gBattle_WIN0V
_080E4974: .4byte 0xfffffc04
-_080E4978: .4byte gUnknown_03004DC0
-_080E497C: .4byte gUnknown_03004DE0
+_080E4978: .4byte gScanlineEffect
+_080E497C: .4byte gScanlineEffectRegBuffers
_080E4980: .4byte gTasks
_080E4984: .4byte 0x0600e000
_080E4988: .4byte 0x05000200
@@ -978,9 +978,9 @@ _080E4B3A:
strh r0, [r1, 0xC]
_080E4B50:
movs r3, 0
- ldr r6, _080E4BE8 @ =gUnknown_03004DC0
+ ldr r6, _080E4BE8 @ =gScanlineEffect
mov r8, r6
- ldr r7, _080E4BEC @ =gUnknown_03004DE0
+ ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers
adds r5, r1, 0
_080E4B5A:
lsls r2, r3, 1
@@ -997,8 +997,8 @@ _080E4B5A:
ble _080E4B5A
cmp r3, 0x9F
bgt _080E4B9E
- ldr r7, _080E4BEC @ =gUnknown_03004DE0
- ldr r6, _080E4BE8 @ =gUnknown_03004DC0
+ ldr r7, _080E4BEC @ =gScanlineEffectRegBuffers
+ ldr r6, _080E4BE8 @ =gScanlineEffect
ldr r1, _080E4BF0 @ =gTasks
mov r2, r12
adds r0, r2, r4
@@ -1053,8 +1053,8 @@ _080E4B9E:
.align 2, 0
_080E4BE0: .4byte gBattle_WIN0V
_080E4BE4: .4byte 0xfffffc04
-_080E4BE8: .4byte gUnknown_03004DC0
-_080E4BEC: .4byte gUnknown_03004DE0
+_080E4BE8: .4byte gScanlineEffect
+_080E4BEC: .4byte gScanlineEffectRegBuffers
_080E4BF0: .4byte gTasks
_080E4BF4: .4byte 0x0600e000
_080E4BF8: .4byte 0x05000200
@@ -1323,9 +1323,9 @@ _080E4E00:
strh r0, [r1, 0xC]
_080E4E16:
movs r3, 0
- ldr r0, _080E4EA4 @ =gUnknown_03004DC0
+ ldr r0, _080E4EA4 @ =gScanlineEffect
mov r9, r0
- ldr r2, _080E4EA8 @ =gUnknown_03004DE0
+ ldr r2, _080E4EA8 @ =gScanlineEffectRegBuffers
mov r8, r2
mov r7, r9
adds r4, r1, 0
@@ -1344,9 +1344,9 @@ _080E4E24:
ble _080E4E24
cmp r3, 0x9F
bgt _080E4E68
- ldr r0, _080E4EA8 @ =gUnknown_03004DE0
+ ldr r0, _080E4EA8 @ =gScanlineEffectRegBuffers
mov r8, r0
- ldr r7, _080E4EA4 @ =gUnknown_03004DC0
+ ldr r7, _080E4EA4 @ =gScanlineEffect
ldr r1, _080E4EAC @ =gTasks
adds r0, r5, r6
lsls r0, 3
@@ -1395,8 +1395,8 @@ _080E4E94:
.align 2, 0
_080E4E9C: .4byte gBattle_WIN0V
_080E4EA0: .4byte 0xfffffc04
-_080E4EA4: .4byte gUnknown_03004DC0
-_080E4EA8: .4byte gUnknown_03004DE0
+_080E4EA4: .4byte gScanlineEffect
+_080E4EA8: .4byte gScanlineEffectRegBuffers
_080E4EAC: .4byte gTasks
_080E4EB0: .4byte REG_BG1CNT
_080E4EB4:
diff --git a/asm/bug.s b/asm/bug.s
deleted file mode 100755
index 83170e9a7..000000000
--- a/asm/bug.s
+++ /dev/null
@@ -1,825 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ bug
-
- thumb_func_start sub_80DC824
-sub_80DC824: @ 80DC824
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC850
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, _080DC84C @ =gBattleAnimArgs
- ldrh r1, [r0, 0x4]
- negs r1, r1
- strh r1, [r0, 0x4]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
- b _080DC880
- .align 2, 0
-_080DC84C: .4byte gBattleAnimArgs
-_080DC850:
- ldr r0, _080DC8E4 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DC880
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r1, _080DC8E8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080DC880:
- ldr r5, _080DC8E4 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077EE4
- lsls r0, 24
- ldr r4, _080DC8E8 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077EE4
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x6]
- adds r0, r4
- strh r0, [r6, 0x36]
- ldr r0, _080DC8EC @ =sub_8078B34
- str r0, [r6, 0x1C]
- ldr r1, _080DC8F0 @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC8E4: .4byte gAnimBankTarget
-_080DC8E8: .4byte gBattleAnimArgs
-_080DC8EC: .4byte sub_8078B34
-_080DC8F0: .4byte DestroyAnimSprite
- thumb_func_end sub_80DC824
-
- thumb_func_start sub_80DC8F4
-sub_80DC8F4: @ 80DC8F4
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC918
- ldr r1, _080DC914 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- adds r0, r6, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _080DC934
- .align 2, 0
-_080DC914: .4byte gBattleAnimArgs
-_080DC918:
- ldr r0, _080DC990 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DC934
- ldr r0, _080DC994 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0]
- negs r1, r1
- strh r1, [r0]
-_080DC934:
- ldr r5, _080DC990 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_8077EE4
- lsls r0, 24
- ldr r4, _080DC994 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_8077EE4
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r6, 0x22]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x2E]
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x36]
- ldr r0, _080DC998 @ =sub_8078B34
- str r0, [r6, 0x1C]
- ldr r1, _080DC99C @ =DestroyAnimSprite
- adds r0, r6, 0
- bl StoreSpriteCallbackInData
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC990: .4byte gAnimBankTarget
-_080DC994: .4byte gBattleAnimArgs
-_080DC998: .4byte sub_8078B34
-_080DC99C: .4byte DestroyAnimSprite
- thumb_func_end sub_80DC8F4
-
- thumb_func_start sub_80DC9A0
-sub_80DC9A0: @ 80DC9A0
- push {r4,r5,lr}
- adds r5, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC9BC
- ldr r0, _080DC9FC @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- strh r1, [r0, 0x4]
-_080DC9BC:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r1, _080DC9FC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080DCA04
- ldr r4, _080DCA00 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- b _080DCA16
- .align 2, 0
-_080DC9FC: .4byte gBattleAnimArgs
-_080DCA00: .4byte gAnimBankTarget
-_080DCA04:
- ldr r0, _080DCA2C @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x32
- adds r3, r5, 0
- adds r3, 0x36
- movs r1, 0x1
- bl sub_807A3FC
-_080DCA16:
- adds r0, r5, 0
- bl sub_8078BD4
- ldr r0, _080DCA30 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x6]
- strh r0, [r5, 0x38]
- ldr r0, _080DCA34 @ =sub_80DCA38
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCA2C: .4byte gAnimBankTarget
-_080DCA30: .4byte gBattleAnimArgs
-_080DCA34: .4byte sub_80DCA38
- thumb_func_end sub_80DC9A0
-
- thumb_func_start sub_80DCA38
-sub_80DCA38: @ 80DCA38
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- beq _080DCA4E
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080DCA6A
-_080DCA4E:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0xD
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
-_080DCA6A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DCA38
-
- thumb_func_start sub_80DCA70
-sub_80DCA70: @ 80DCA70
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080DCAA0 @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_807A3FC
- ldr r0, _080DCAA4 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DCAAC
- ldr r0, _080DCAA8 @ =gBattleAnimArgs
- ldrh r1, [r4, 0x20]
- ldrh r2, [r0]
- subs r1, r2
- strh r1, [r4, 0x20]
- b _080DCAB8
- .align 2, 0
-_080DCAA0: .4byte gAnimBankTarget
-_080DCAA4: .4byte gAnimBankAttacker
-_080DCAA8: .4byte gBattleAnimArgs
-_080DCAAC:
- ldr r1, _080DCAE0 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, r1, 0
-_080DCAB8:
- ldrh r0, [r0, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldr r0, _080DCAE4 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DCAD4
- ldrh r0, [r4, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_080DCAD4:
- ldr r0, _080DCAE8 @ =sub_80DCAEC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCAE0: .4byte gBattleAnimArgs
-_080DCAE4: .4byte gAnimBankTarget
-_080DCAE8: .4byte sub_80DCAEC
- thumb_func_end sub_80DCA70
-
- thumb_func_start sub_80DCAEC
-sub_80DCAEC: @ 80DCAEC
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080DCB20
- movs r0, 0
- strh r0, [r3, 0x2E]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
-_080DCB20:
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x33
- bne _080DCB34
- adds r0, r3, 0
- bl DestroyAnimSprite
-_080DCB34:
- pop {r0}
- bx r0
- thumb_func_end sub_80DCAEC
-
- thumb_func_start sub_80DCB38
-sub_80DCB38: @ 80DCB38
- ldr r2, _080DCB54 @ =REG_BLDCNT
- movs r3, 0xFD
- lsls r3, 6
- adds r1, r3, 0
- strh r1, [r2]
- adds r2, 0x2
- movs r1, 0x10
- strh r1, [r2]
- movs r1, 0x10
- strh r1, [r0, 0x2E]
- ldr r1, _080DCB58 @ =sub_80DCB5C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080DCB54: .4byte REG_BLDCNT
-_080DCB58: .4byte sub_80DCB5C
- thumb_func_end sub_80DCB38
-
- thumb_func_start sub_80DCB5C
-sub_80DCB5C: @ 80DCB5C
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x32]
- movs r2, 0x32
- ldrsh r0, [r3, r2]
- cmp r0, 0x13
- bgt _080DCB70
- adds r0, r1, 0x1
- strh r0, [r3, 0x32]
- b _080DCBA8
-_080DCB70:
- ldrh r1, [r3, 0x30]
- adds r0, r1, 0x1
- strh r0, [r3, 0x30]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DCBA8
- ldrh r1, [r3, 0x2E]
- subs r1, 0x1
- strh r1, [r3, 0x2E]
- ldr r2, _080DCBAC @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080DCBA8
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DCBB0 @ =sub_80DCBB4
- str r0, [r3, 0x1C]
-_080DCBA8:
- pop {r0}
- bx r0
- .align 2, 0
-_080DCBAC: .4byte REG_BLDALPHA
-_080DCBB0: .4byte sub_80DCBB4
- thumb_func_end sub_80DCB5C
-
- thumb_func_start sub_80DCBB4
-sub_80DCBB4: @ 80DCBB4
- push {lr}
- ldr r1, _080DCBC8 @ =REG_BLDCNT
- movs r2, 0
- strh r2, [r1]
- adds r1, 0x2
- strh r2, [r1]
- bl DestroyAnimSprite
- pop {r0}
- bx r0
- .align 2, 0
-_080DCBC8: .4byte REG_BLDCNT
- thumb_func_end sub_80DCBB4
-
- thumb_func_start sub_80DCBCC
-sub_80DCBCC: @ 80DCBCC
- push {r4-r7,lr}
- sub sp, 0x4
- adds r7, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DCBEC
- ldr r1, _080DCBE8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- b _080DCC0E
- .align 2, 0
-_080DCBE8: .4byte gBattleAnimArgs
-_080DCBEC:
- ldr r0, _080DCCE8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DCC0E
- ldr r1, _080DCCEC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
- ldrh r0, [r1, 0x2]
- negs r0, r0
- strh r0, [r1, 0x2]
- ldrh r0, [r1, 0x6]
- negs r0, r0
- strh r0, [r1, 0x6]
-_080DCC0E:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DCC5E
- ldr r0, _080DCCE8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- adds r4, r0, 0
- ldr r5, _080DCCF0 @ =gAnimBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080DCC5E
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- beq _080DCC4C
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DCC5E
-_080DCC4C:
- ldr r0, _080DCCEC @ =gBattleAnimArgs
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0, 0x4]
- movs r2, 0
- ldrsh r1, [r0, r2]
- negs r1, r1
- strh r1, [r0]
-_080DCC5E:
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r5, _080DCCF0 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- adds r4, r0, 0
- lsls r4, 24
- ldr r6, _080DCCEC @ =gBattleAnimArgs
- lsrs r4, 24
- ldrh r0, [r6, 0x4]
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r6, 0x6]
- adds r1, r2
- lsls r1, 16
- ldrh r2, [r7, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- subs r0, r2
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r7, 0x22]
- lsrs r5, r1, 16
- asrs r1, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_80790F0
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r7, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8078FDC
- ldrh r0, [r6, 0x8]
- strh r0, [r7, 0x2E]
- strh r4, [r7, 0x32]
- strh r5, [r7, 0x36]
- ldr r0, _080DCCF4 @ =sub_8078B34
- str r0, [r7, 0x1C]
- ldr r1, _080DCCF8 @ =DestroyAnimSprite
- adds r0, r7, 0
- bl StoreSpriteCallbackInData
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCCE8: .4byte gAnimBankAttacker
-_080DCCEC: .4byte gBattleAnimArgs
-_080DCCF0: .4byte gAnimBankTarget
-_080DCCF4: .4byte sub_8078B34
-_080DCCF8: .4byte DestroyAnimSprite
- thumb_func_end sub_80DCBCC
-
- thumb_func_start sub_80DCCFC
-sub_80DCCFC: @ 80DCCFC
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r0, _080DCD68 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DCD1C
- ldr r1, _080DCD6C @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080DCD1C:
- ldr r4, _080DCD6C @ =gBattleAnimArgs
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x2E]
- ldr r5, _080DCD70 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r6, 0x36]
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- adds r0, r6, 0
- bl sub_80786EC
- ldr r0, _080DCD74 @ =sub_80DCD78
- str r0, [r6, 0x1C]
- adds r2, r6, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCD68: .4byte gAnimBankAttacker
-_080DCD6C: .4byte gBattleAnimArgs
-_080DCD70: .4byte gAnimBankTarget
-_080DCD74: .4byte sub_80DCD78
- thumb_func_end sub_80DCCFC
-
- thumb_func_start sub_80DCD78
-sub_80DCD78: @ 80DCD78
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r2]
- adds r0, r4, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080DCDA4
- adds r0, r4, 0
- bl DestroyAnimSprite
- b _080DCE34
-_080DCDA4:
- movs r0, 0x2E
- adds r0, r4
- mov r8, r0
- ldrh r7, [r4, 0x20]
- ldrh r5, [r4, 0x24]
- ldrh r1, [r4, 0x22]
- mov r12, r1
- ldrh r6, [r4, 0x26]
- mov r2, r8
- add r1, sp, 0x4
- movs r3, 0x7
-_080DCDBA:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080DCDBA
- adds r0, r7, r5
- lsls r0, 16
- lsrs r5, r0, 16
- mov r2, r12
- adds r0, r2, r6
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- bne _080DCE34
- ldrh r0, [r4, 0x24]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- lsls r1, r5, 16
- asrs r1, 16
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4, 0x26]
- ldrh r2, [r4, 0x22]
- adds r1, r2
- lsls r2, r6, 16
- asrs r2, 16
- subs r1, r2
- lsls r1, 16
- asrs r1, 16
- bl sub_80790F0
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 24
- adds r0, r1
- lsrs r0, 16
- movs r3, 0x80
- lsls r3, 1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r3, 0
- bl sub_8078FDC
- add r2, sp, 0x4
- mov r1, r8
- movs r3, 0x7
-_080DCE26:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080DCE26
-_080DCE34:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DCD78
-
- thumb_func_start sub_80DCE40
-sub_80DCE40: @ 80DCE40
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080DCE54 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DCE5C
- ldr r4, _080DCE58 @ =gAnimBankAttacker
- b _080DCE5E
- .align 2, 0
-_080DCE54: .4byte gBattleAnimArgs
-_080DCE58: .4byte gAnimBankAttacker
-_080DCE5C:
- ldr r4, _080DCE90 @ =gAnimBankTarget
-_080DCE5E:
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x12
- strh r0, [r5, 0x22]
- ldr r1, _080DCE94 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080DCE98 @ =sub_80785E4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCE90: .4byte gAnimBankTarget
-_080DCE94: .4byte move_anim_8074EE0
-_080DCE98: .4byte sub_80785E4
- thumb_func_end sub_80DCE40
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index 94347f2ad..709b289c2 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index d06789976..341cb0903 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 71788c918..af239f3f7 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -94,9 +94,9 @@ sub_80C2020: @ 80C2020
strh r2, [r0]
ldr r0, _080C2128 @ =gBattle_BG2_Y
strh r2, [r0]
- ldr r0, _080C212C @ =gUnknown_030041B0
+ ldr r0, _080C212C @ =gBattle_BG3_X
strh r2, [r0]
- ldr r0, _080C2130 @ =gUnknown_030041B8
+ ldr r0, _080C2130 @ =gBattle_BG3_Y
strh r2, [r0]
ldr r0, _080C2134 @ =gBattle_WIN0H
strh r2, [r0]
@@ -125,8 +125,8 @@ _080C211C: .4byte gBattle_BG1_X
_080C2120: .4byte gBattle_BG1_Y
_080C2124: .4byte gBattle_BG2_X
_080C2128: .4byte gBattle_BG2_Y
-_080C212C: .4byte gUnknown_030041B0
-_080C2130: .4byte gUnknown_030041B8
+_080C212C: .4byte gBattle_BG3_X
+_080C2130: .4byte gBattle_BG3_Y
_080C2134: .4byte gBattle_WIN0H
_080C2138: .4byte gBattle_WIN0V
_080C213C: .4byte gBattle_WIN1H
@@ -396,7 +396,7 @@ sub_80C2358: @ 80C2358
movs r0, 0
bl SetVBlankCallback
bl sub_80C2020
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
@@ -506,11 +506,11 @@ sub_80C2448: @ 80C2448
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x2
- ldr r0, _080C24DC @ =gUnknown_030041B0
+ ldr r0, _080C24DC @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x2
- ldr r0, _080C24E0 @ =gUnknown_030041B8
+ ldr r0, _080C24E0 @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r1]
adds r1, 0x22
@@ -532,7 +532,7 @@ sub_80C2448: @ 80C2448
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8089668
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
@@ -543,8 +543,8 @@ _080C24CC: .4byte gBattle_BG1_X
_080C24D0: .4byte gBattle_BG1_Y
_080C24D4: .4byte gBattle_BG2_X
_080C24D8: .4byte gBattle_BG2_Y
-_080C24DC: .4byte gUnknown_030041B0
-_080C24E0: .4byte gUnknown_030041B8
+_080C24DC: .4byte gBattle_BG3_X
+_080C24E0: .4byte gBattle_BG3_Y
_080C24E4: .4byte gBattle_WIN0H
_080C24E8: .4byte gBattle_WIN0V
_080C24EC: .4byte gBattle_WIN1H
@@ -1826,11 +1826,11 @@ _080C2F24: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
thumb_func_start sub_80C2F28
sub_80C2F28: @ 80C2F28
push {r4,r5,lr}
- ldr r2, _080C2F5C @ =gUnknown_030041B0
+ ldr r2, _080C2F5C @ =gBattle_BG3_X
ldrh r3, [r2]
adds r0, r3, 0x2
strh r0, [r2]
- ldr r4, _080C2F60 @ =gUnknown_030041B8
+ ldr r4, _080C2F60 @ =gBattle_BG3_Y
ldrh r5, [r4]
adds r1, r5, 0x1
strh r1, [r4]
@@ -1854,8 +1854,8 @@ _080C2F56:
pop {r0}
bx r0
.align 2, 0
-_080C2F5C: .4byte gUnknown_030041B0
-_080C2F60: .4byte gUnknown_030041B8
+_080C2F5C: .4byte gBattle_BG3_X
+_080C2F60: .4byte gBattle_BG3_Y
thumb_func_end sub_80C2F28
thumb_func_start sub_80C2F64
diff --git a/asm/contest_link_80C857C.s b/asm/contest_link_80C857C.s
index 13d01d5a9..b29e03583 100644
--- a/asm/contest_link_80C857C.s
+++ b/asm/contest_link_80C857C.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/current.s b/asm/current.s
index e77218cc9..4ef537dc3 100755
--- a/asm/current.s
+++ b/asm/current.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s
index da5dea0ce..8cb6cdbd8 100644
--- a/asm/cute_sketch.s
+++ b/asm/cute_sketch.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/dark.s b/asm/dark.s
index f3274861c..9f6ad3278 100755
--- a/asm/dark.s
+++ b/asm/dark.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -386,7 +386,7 @@ _080E01F4:
movs r0, 0x3
bl sub_80E08CC
movs r3, 0
- ldr r4, _080E0290 @ =gUnknown_03004DE0
+ ldr r4, _080E0290 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r4, r0
@@ -406,7 +406,7 @@ _080E0220:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r1, _080E0294 @ =REG_WINOUT
movs r0, 0x3F
eors r7, r0
@@ -441,7 +441,7 @@ _080E0280: .4byte 0x00003f44
_080E0284: .4byte REG_BG2VOFS
_080E0288: .4byte gBattle_BG1_X
_080E028C: .4byte 0xa2600001
-_080E0290: .4byte gUnknown_03004DE0
+_080E0290: .4byte gScanlineEffectRegBuffers
_080E0294: .4byte REG_WINOUT
_080E0298: .4byte gBattle_WIN0H
_080E029C: .4byte gBattle_WIN0V
@@ -575,7 +575,7 @@ _080E0380:
.align 2, 0
_080E0398: .4byte gBattle_WIN0H
_080E039C:
- ldr r1, _080E03AC @ =gUnknown_03004DC0
+ ldr r1, _080E03AC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E03A2:
@@ -584,7 +584,7 @@ _080E03A2:
strh r0, [r4, 0x8]
b _080E03B6
.align 2, 0
-_080E03AC: .4byte gUnknown_03004DC0
+_080E03AC: .4byte gScanlineEffect
_080E03B0:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -786,7 +786,7 @@ _080E054E:
str r0, [sp, 0xC]
movs r3, 0
add r4, sp, 0xC
- ldr r6, _080E059C @ =gUnknown_03004DE0
+ ldr r6, _080E059C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r7, r6, r0
@@ -815,7 +815,7 @@ _080E055C:
strb r2, [r4, 0x9]
ldr r0, [sp, 0xC]
ldr r2, [r4, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
_080E0590:
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -823,7 +823,7 @@ _080E0590:
b _080E05F2
.align 2, 0
_080E0598: .4byte REG_BG2VOFS
-_080E059C: .4byte gUnknown_03004DE0
+_080E059C: .4byte gScanlineEffectRegBuffers
_080E05A0: .4byte 0xa2600001
_080E05A4:
movs r1, 0xE
@@ -1043,7 +1043,7 @@ _080E0732:
.align 2, 0
_080E0750: .4byte REG_BLDALPHA
_080E0754:
- ldr r1, _080E0764 @ =gUnknown_03004DC0
+ ldr r1, _080E0764 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E075A:
@@ -1052,7 +1052,7 @@ _080E075A:
strh r0, [r4, 0x8]
b _080E0784
.align 2, 0
-_080E0764: .4byte gUnknown_03004DC0
+_080E0764: .4byte gScanlineEffect
_080E0768:
ldr r0, _080E078C @ =gBattle_WIN0H
movs r1, 0
@@ -1102,9 +1102,9 @@ sub_80E079C: @ 80E079C
movs r4, 0
cmp r0, 0
ble _080E07FC
- ldr r0, _080E0888 @ =gUnknown_03004DE0
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E088C @ =gScanlineEffect
_080E07D0:
lsls r2, r4, 16
asrs r2, 16
@@ -1136,9 +1136,9 @@ _080E07FC:
ldrsh r0, [r6, r2]
cmp r1, r0
bgt _080E0846
- ldr r0, _080E0888 @ =gUnknown_03004DE0
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E088C @ =gScanlineEffect
_080E0810:
asrs r4, r3, 16
cmp r4, 0
@@ -1179,8 +1179,8 @@ _080E0846:
ldrsh r0, [r6, r3]
cmp r1, r0
bge _080E08BE
- ldr r7, _080E0888 @ =gUnknown_03004DE0
- ldr r4, _080E088C @ =gUnknown_03004DC0
+ ldr r7, _080E0888 @ =gScanlineEffectRegBuffers
+ ldr r4, _080E088C @ =gScanlineEffect
_080E085E:
asrs r3, r2, 16
cmp r3, 0
@@ -1204,15 +1204,15 @@ _080E0876:
blt _080E085E
b _080E08BE
.align 2, 0
-_080E0888: .4byte gUnknown_03004DE0
-_080E088C: .4byte gUnknown_03004DC0
+_080E0888: .4byte gScanlineEffectRegBuffers
+_080E088C: .4byte gScanlineEffect
_080E0890:
movs r1, 0x1C
ldrsh r0, [r6, r1]
adds r5, r0, 0
adds r5, 0x9F
movs r4, 0
- ldr r3, _080E08C8 @ =gUnknown_03004DE0
+ ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers
movs r2, 0xF0
lsls r2, 3
adds r6, r3, r2
@@ -1238,7 +1238,7 @@ _080E08BE:
pop {r0}
bx r0
.align 2, 0
-_080E08C8: .4byte gUnknown_03004DE0
+_080E08C8: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80E079C
thumb_func_start sub_80E08CC
diff --git a/asm/dragon.s b/asm/dragon.s
deleted file mode 100755
index 7c4ea0547..000000000
--- a/asm/dragon.s
+++ /dev/null
@@ -1,1214 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ dragon
-
- thumb_func_start sub_80DF5A0
-sub_80DF5A0: @ 80DF5A0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080DF5E8 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF5F0
- ldr r2, _080DF5EC @ =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r2, 0x6]
- negs r0, r0
- strh r0, [r2, 0x6]
- ldrh r0, [r2, 0x8]
- negs r0, r0
- strh r0, [r2, 0x8]
- adds r1, r2, 0
- b _080DF5FA
- .align 2, 0
-_080DF5E8: .4byte gAnimBankAttacker
-_080DF5EC: .4byte gBattleAnimArgs
-_080DF5F0:
- ldr r1, _080DF630 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
-_080DF5FA:
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x34]
- ldrh r0, [r1, 0xA]
- strh r0, [r5, 0x38]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080DF634 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080DF638 @ =sub_8078504
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF630: .4byte gBattleAnimArgs
-_080DF634: .4byte move_anim_8074EE0
-_080DF638: .4byte sub_8078504
- thumb_func_end sub_80DF5A0
-
- thumb_func_start sub_80DF63C
-sub_80DF63C: @ 80DF63C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8078650
- ldr r4, _080DF694 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080DF698 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF6A0
- ldr r2, _080DF69C @ =gBattleAnimArgs
- ldrh r0, [r5, 0x20]
- ldrh r1, [r2, 0x2]
- subs r0, r1
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r1, r0
- strh r1, [r5, 0x22]
- ldrh r0, [r5, 0x32]
- ldrh r1, [r2, 0x4]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrh r0, [r2, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- b _080DF6CA
- .align 2, 0
-_080DF694: .4byte gAnimBankTarget
-_080DF698: .4byte gAnimBankAttacker
-_080DF69C: .4byte gBattleAnimArgs
-_080DF6A0:
- ldr r1, _080DF6E4 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- ldrh r0, [r1, 0x4]
- ldrh r2, [r5, 0x32]
- adds r0, r2
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x6]
- ldrh r1, [r5, 0x36]
- adds r0, r1
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080DF6CA:
- ldr r0, _080DF6E4 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x8]
- strh r0, [r5, 0x2E]
- ldr r0, _080DF6E8 @ =sub_8078B34
- str r0, [r5, 0x1C]
- ldr r1, _080DF6EC @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF6E4: .4byte gBattleAnimArgs
-_080DF6E8: .4byte sub_8078B34
-_080DF6EC: .4byte move_anim_8074EE0
- thumb_func_end sub_80DF63C
-
- thumb_func_start sub_80DF6F0
-sub_80DF6F0: @ 80DF6F0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080DF704 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DF70C
- ldr r4, _080DF708 @ =gAnimBankAttacker
- b _080DF70E
- .align 2, 0
-_080DF704: .4byte gBattleAnimArgs
-_080DF708: .4byte gAnimBankAttacker
-_080DF70C:
- ldr r4, _080DF750 @ =gAnimBankTarget
-_080DF70E:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r4, _080DF754 @ =gBattleAnimArgs
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- adds r0, r5, 0
- bl sub_807867C
- ldrh r0, [r4, 0x4]
- ldrh r1, [r5, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldr r0, _080DF758 @ =sub_8078600
- str r0, [r5, 0x1C]
- ldr r1, _080DF75C @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF750: .4byte gAnimBankTarget
-_080DF754: .4byte gBattleAnimArgs
-_080DF758: .4byte sub_8078600
-_080DF75C: .4byte move_anim_8074EE0
- thumb_func_end sub_80DF6F0
-
- thumb_func_start sub_80DF760
-sub_80DF760: @ 80DF760
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080DF788 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DF77A
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080DF77A:
- adds r0, r4, 0
- bl sub_80DF63C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF788: .4byte gAnimBankAttacker
- thumb_func_end sub_80DF760
-
- thumb_func_start sub_80DF78C
-sub_80DF78C: @ 80DF78C
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r4, _080DF7E0 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r6, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x22]
- strh r5, [r6, 0x36]
- movs r0, 0x1
- strh r0, [r6, 0x38]
- ldr r0, _080DF7E4 @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r6, 0x3A]
- ldr r4, _080DF7E8 @ =gBankAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl sub_807A100
- lsls r7, r0, 16
- lsrs r5, r7, 16
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_807A100
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r5, r0
- bls _080DF7EC
- lsrs r0, r7, 17
- b _080DF7EE
- .align 2, 0
-_080DF7E0: .4byte gAnimBankAttacker
-_080DF7E4: .4byte gBattleAnimArgs
-_080DF7E8: .4byte gBankAttacker
-_080DF7EC:
- lsrs r0, r1, 17
-_080DF7EE:
- strh r0, [r6, 0x3C]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Cos
- strh r0, [r6, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- movs r2, 0x3C
- ldrsh r1, [r6, r2]
- bl Sin
- strh r0, [r6, 0x26]
- ldr r0, _080DF818 @ =sub_80DF81C
- str r0, [r6, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF818: .4byte sub_80DF81C
- thumb_func_end sub_80DF78C
-
- thumb_func_start sub_80DF81C
-sub_80DF81C: @ 80DF81C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080DF82E
- cmp r5, 0x1
- beq _080DF89A
- b _080DF91E
-_080DF82E:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080DF880
- strh r5, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080DF880
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080DF880
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080DF880:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080DF91E
- movs r0, 0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080DF91E
-_080DF89A:
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0x95
- bgt _080DF8C2
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x95
- ble _080DF8C2
- movs r0, 0x96
- strh r0, [r4, 0x3C]
-_080DF8C2:
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080DF90A
- movs r0, 0
- strh r0, [r4, 0x36]
- ldrh r1, [r4, 0x38]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- bgt _080DF90A
- adds r0, r1, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080DF90A
- movs r0, 0x10
- strh r0, [r4, 0x38]
-_080DF90A:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080DF91E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DF91E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DF81C
-
- thumb_func_start sub_80DF924
-sub_80DF924: @ 80DF924
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DF950 @ =gTasks
- adds r4, r1, r0
- ldr r0, _080DF954 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DF960
- ldr r0, _080DF958 @ =REG_BG1HOFS
- str r0, [sp]
- ldr r0, _080DF95C @ =gBattle_BG1_X
- b _080DF966
- .align 2, 0
-_080DF950: .4byte gTasks
-_080DF954: .4byte gAnimBankAttacker
-_080DF958: .4byte REG_BG1HOFS
-_080DF95C: .4byte gBattle_BG1_X
-_080DF960:
- ldr r0, _080DF9DC @ =REG_BG2HOFS
- str r0, [sp]
- ldr r0, _080DF9E0 @ =gBattle_BG2_X
-_080DF966:
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
- ldr r0, _080DF9E4 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r5, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r5, [r0, 0x9]
- ldr r0, _080DF9E8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl sub_8077FC0
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r4, 0xE]
- adds r0, 0x20
- strh r0, [r4, 0x10]
- cmp r1, 0
- bge _080DF996
- strh r5, [r4, 0xE]
-_080DF996:
- ldrh r3, [r4, 0xE]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- bgt _080DF9C4
- ldr r5, _080DF9EC @ =gUnknown_03004DE0
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080DF9A8:
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0xC]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0xC]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r3, r0
- ble _080DF9A8
-_080DF9C4:
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl sub_80895F8
- ldr r0, _080DF9F0 @ =sub_80DF9F4
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DF9DC: .4byte REG_BG2HOFS
-_080DF9E0: .4byte gBattle_BG2_X
-_080DF9E4: .4byte 0xa2600001
-_080DF9E8: .4byte gAnimBankAttacker
-_080DF9EC: .4byte gUnknown_03004DE0
-_080DF9F0: .4byte sub_80DF9F4
- thumb_func_end sub_80DF924
-
- thumb_func_start sub_80DF9F4
-sub_80DF9F4: @ 80DF9F4
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080DFA18 @ =gTasks
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bhi _080DFAAA
- lsls r0, 2
- ldr r1, _080DFA1C @ =_080DFA20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DFA18: .4byte gTasks
-_080DFA1C: .4byte _080DFA20
- .align 2, 0
-_080DFA20:
- .4byte _080DFA34
- .4byte _080DFA56
- .4byte _080DFA66
- .4byte _080DFA92
- .4byte _080DFAA4
-_080DFA34:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DFA8A
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- adds r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080DFA8A
- b _080DFA84
-_080DFA56:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080DFA8A
- b _080DFA84
-_080DFA66:
- ldrh r0, [r2, 0x16]
- adds r0, 0x1
- strh r0, [r2, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DFA8A
- movs r0, 0
- strh r0, [r2, 0x16]
- ldrh r0, [r2, 0x14]
- subs r0, 0x1
- strh r0, [r2, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _080DFA8A
-_080DFA84:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_080DFA8A:
- adds r0, r2, 0
- bl sub_80DFAB0
- b _080DFAAA
-_080DFA92:
- ldr r1, _080DFAA0 @ =gUnknown_03004DC0
- movs r0, 0x3
- strb r0, [r1, 0x15]
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080DFAAA
- .align 2, 0
-_080DFAA0: .4byte gUnknown_03004DC0
-_080DFAA4:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
-_080DFAAA:
- pop {r0}
- bx r0
- thumb_func_end sub_80DF9F4
-
- thumb_func_start sub_80DFAB0
-sub_80DFAB0: @ 80DFAB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- ldrh r3, [r5, 0x12]
- ldrh r4, [r5, 0xE]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r4, r0
- bgt _080DFB06
- ldr r7, _080DFB1C @ =gUnknown_03004DE0
- mov r12, r7
- ldr r0, _080DFB20 @ =gSineTable
- mov r8, r0
- ldr r6, _080DFB24 @ =gUnknown_03004DC0
-_080DFACE:
- lsls r2, r4, 1
- ldrb r1, [r6, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- add r2, r12
- lsls r0, r3, 1
- add r0, r8
- movs r7, 0
- ldrsh r1, [r0, r7]
- movs r7, 0x14
- ldrsh r0, [r5, r7]
- muls r0, r1
- asrs r0, 7
- ldrh r1, [r5, 0xC]
- adds r0, r1
- strh r0, [r2]
- adds r3, 0x8
- movs r0, 0xFF
- ands r3, r0
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- movs r7, 0x10
- ldrsh r0, [r5, r7]
- cmp r4, r0
- ble _080DFACE
-_080DFB06:
- ldrh r0, [r5, 0x12]
- adds r0, 0x9
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r5, 0x12]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFB1C: .4byte gUnknown_03004DE0
-_080DFB20: .4byte gSineTable
-_080DFB24: .4byte gUnknown_03004DC0
- thumb_func_end sub_80DFAB0
-
- thumb_func_start sub_80DFB28
-sub_80DFB28: @ 80DFB28
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- ldr r5, _080DFBC8 @ =gBattleAnimArgs
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- movs r1, 0x5
- bl __divsi3
- adds r6, r0, 0
- ldr r1, _080DFBCC @ =gAnimBankAttacker
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r5, 0x8]
- adds r0, r3
- strh r0, [r4, 0x22]
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Cos
- strh r0, [r4, 0x30]
- movs r3, 0x2
- ldrsh r0, [r5, r3]
- lsls r6, 16
- asrs r6, 16
- adds r1, r6, 0
- bl Sin
- strh r0, [r4, 0x32]
- ldrh r1, [r4, 0x30]
- ldrh r2, [r5]
- adds r3, r2, 0
- muls r3, r1
- adds r1, r3, 0
- ldrh r3, [r4, 0x20]
- adds r1, r3
- strh r1, [r4, 0x20]
- adds r1, r2, 0
- muls r1, r0
- adds r0, r1, 0
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x34]
- ldr r0, _080DFBD0 @ =sub_80DFBD8
- str r0, [r4, 0x1C]
- adds r4, 0x2E
- ldr r2, _080DFBD4 @ =gUnknown_03000730
- movs r1, 0x6
-_080DFBB0:
- ldrh r0, [r4]
- strh r0, [r2]
- adds r4, 0x2
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080DFBB0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFBC8: .4byte gBattleAnimArgs
-_080DFBCC: .4byte gAnimBankAttacker
-_080DFBD0: .4byte sub_80DFBD8
-_080DFBD4: .4byte gUnknown_03000730
- thumb_func_end sub_80DFB28
-
- thumb_func_start sub_80DFBD8
-sub_80DFBD8: @ 80DFBD8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x38]
- adds r0, r2
- strh r0, [r4, 0x38]
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x24]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080DFC1C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DFC1C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DFBD8
-
- thumb_func_start sub_80DFC24
-sub_80DFC24: @ 80DFC24
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080DFC58 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DFC5C @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r1, 0x8]
- ldr r0, _080DFC60 @ =gAnimBankAttacker
- ldrb r0, [r0]
- movs r2, 0x10
- strh r2, [r1, 0xA]
- ldr r1, _080DFC64 @ =REG_BLDALPHA
- strh r2, [r1]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DFC70
- ldr r1, _080DFC68 @ =REG_BLDCNT
- ldr r2, _080DFC6C @ =0x00003f42
- b _080DFC74
- .align 2, 0
-_080DFC58: .4byte gTasks
-_080DFC5C: .4byte gBattleAnimArgs
-_080DFC60: .4byte gAnimBankAttacker
-_080DFC64: .4byte REG_BLDALPHA
-_080DFC68: .4byte REG_BLDCNT
-_080DFC6C: .4byte 0x00003f42
-_080DFC70:
- ldr r1, _080DFC8C @ =REG_BLDCNT
- ldr r2, _080DFC90 @ =0x00003f44
-_080DFC74:
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080DFC94 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080DFC98 @ =sub_80DFC9C
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFC8C: .4byte REG_BLDCNT
-_080DFC90: .4byte 0x00003f44
-_080DFC94: .4byte gTasks
-_080DFC98: .4byte sub_80DFC9C
- thumb_func_end sub_80DFC24
-
- thumb_func_start sub_80DFC9C
-sub_80DFC9C: @ 80DFC9C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080DFD04 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- lsrs r2, r0, 8
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- ldrb r3, [r4, 0x8]
- cmp r0, r3
- bne _080DFD18
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r2, 8
- orrs r1, r0
- movs r3, 0
- strh r1, [r4, 0xA]
- ldr r0, _080DFD08 @ =REG_BLDALPHA
- strh r1, [r0]
- strh r3, [r4, 0xC]
- cmp r2, 0x10
- bne _080DFD1E
- ldr r2, _080DFD0C @ =gSprites
- ldr r1, _080DFD10 @ =gObjectBankIDs
- ldr r0, _080DFD14 @ =gAnimBankAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _080DFD1E
- .align 2, 0
-_080DFD04: .4byte gTasks
-_080DFD08: .4byte REG_BLDALPHA
-_080DFD0C: .4byte gSprites
-_080DFD10: .4byte gObjectBankIDs
-_080DFD14: .4byte gAnimBankAttacker
-_080DFD18:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
-_080DFD1E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DFC9C
-
- thumb_func_start sub_80DFD24
-sub_80DFD24: @ 80DFD24
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DFD48 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080DFD4C @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r1, 0x8]
- movs r2, 0x80
- lsls r2, 5
- strh r2, [r1, 0xA]
- ldr r0, _080DFD50 @ =sub_80DFD58
- str r0, [r1]
- ldr r0, _080DFD54 @ =REG_BLDALPHA
- strh r2, [r0]
- bx lr
- .align 2, 0
-_080DFD48: .4byte gTasks
-_080DFD4C: .4byte gBattleAnimArgs
-_080DFD50: .4byte sub_80DFD58
-_080DFD54: .4byte REG_BLDALPHA
- thumb_func_end sub_80DFD24
-
- thumb_func_start sub_80DFD58
-sub_80DFD58: @ 80DFD58
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080DFDA8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0xA]
- lsrs r1, r0, 8
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0xC
- ldrsh r0, [r2, r3]
- ldrb r3, [r2, 0x8]
- cmp r0, r3
- bne _080DFDB4
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r3, 8
- orrs r1, r0
- movs r0, 0
- strh r1, [r2, 0xA]
- ldr r5, _080DFDAC @ =REG_BLDALPHA
- strh r1, [r5]
- strh r0, [r2, 0xC]
- cmp r3, 0
- bne _080DFDBA
- ldr r0, _080DFDB0 @ =REG_BLDCNT
- strh r3, [r0]
- strh r3, [r5]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080DFDBA
- .align 2, 0
-_080DFDA8: .4byte gTasks
-_080DFDAC: .4byte REG_BLDALPHA
-_080DFDB0: .4byte REG_BLDCNT
-_080DFDB4:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
-_080DFDBA:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DFD58
-
- thumb_func_start sub_80DFDC0
-sub_80DFDC0: @ 80DFDC0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080DFDE8 @ =REG_BLDALPHA
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080DFDEC @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DFDF8
- ldr r1, _080DFDF0 @ =REG_BLDCNT
- ldr r2, _080DFDF4 @ =0x00003f42
- b _080DFDFC
- .align 2, 0
-_080DFDE8: .4byte REG_BLDALPHA
-_080DFDEC: .4byte gAnimBankAttacker
-_080DFDF0: .4byte REG_BLDCNT
-_080DFDF4: .4byte 0x00003f42
-_080DFDF8:
- ldr r1, _080DFE0C @ =REG_BLDCNT
- ldr r2, _080DFE10 @ =0x00003f44
-_080DFDFC:
- adds r0, r2, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFE0C: .4byte REG_BLDCNT
-_080DFE10: .4byte 0x00003f44
- thumb_func_end sub_80DFDC0
-
- thumb_func_start sub_80DFE14
-sub_80DFE14: @ 80DFE14
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r6, _080DFE80 @ =gAnimBankTarget
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x30]
- ldr r5, _080DFE84 @ =gAnimBankAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x34]
- ldrb r0, [r5]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- movs r0, 0x7E
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl sub_8078A5C
- ldrh r0, [r4, 0x30]
- negs r0, r0
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldr r0, _080DFE88 @ =0x0000ffd8
- strh r0, [r4, 0x3A]
- ldr r1, _080DFE8C @ =sub_80DFE90
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFE80: .4byte gAnimBankTarget
-_080DFE84: .4byte gAnimBankAttacker
-_080DFE88: .4byte 0x0000ffd8
-_080DFE8C: .4byte sub_80DFE90
- thumb_func_end sub_80DFE14
-
- thumb_func_start sub_80DFE90
-sub_80DFE90: @ 80DFE90
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r5, [r4, 0x30]
- ldrh r0, [r4, 0x34]
- adds r2, r5, r0
- strh r2, [r4, 0x34]
- ldrh r3, [r4, 0x32]
- ldrh r6, [r4, 0x36]
- adds r1, r3, r6
- strh r1, [r4, 0x36]
- lsls r0, r2, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r0, r1, 16
- asrs r0, 24
- strh r0, [r4, 0x26]
- movs r6, 0x3C
- ldrsh r0, [r4, r6]
- cmp r0, 0
- bne _080DFED2
- adds r0, r2, r5
- strh r0, [r4, 0x34]
- adds r1, r3
- strh r1, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
-_080DFED2:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x3A
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r6, [r4, 0x26]
- adds r0, r6
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x38]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- cmp r0, 0x7F
- ble _080DFF02
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x14
- strh r0, [r4, 0x3A]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
-_080DFF02:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _080DFF14
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DFF14:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DFE90
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fight.s b/asm/fight.s
index d0d042113..e8e3299af 100755
--- a/asm/fight.s
+++ b/asm/fight.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1688,7 +1688,7 @@ _080D9CDE:
lsls r0, 24
cmp r0, 0
bne _080D9D14
- ldr r1, _080D9D10 @ =gUnknown_030041B0
+ ldr r1, _080D9D10 @ =gBattle_BG3_X
ldrh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 24
@@ -1699,9 +1699,9 @@ _080D9CDE:
b _080D9D24
.align 2, 0
_080D9D0C: .4byte gAnimBankTarget
-_080D9D10: .4byte gUnknown_030041B0
+_080D9D10: .4byte gBattle_BG3_X
_080D9D14:
- ldr r2, _080D9D64 @ =gUnknown_030041B0
+ ldr r2, _080D9D64 @ =gBattle_BG3_X
ldrh r1, [r4, 0x1A]
lsls r1, 16
asrs r1, 24
@@ -1710,7 +1710,7 @@ _080D9D14:
strh r0, [r2]
adds r7, r2, 0
_080D9D24:
- ldr r3, _080D9D68 @ =gUnknown_030041B8
+ ldr r3, _080D9D68 @ =gBattle_BG3_Y
ldrh r2, [r4, 0x1C]
lsls r0, r2, 16
asrs r0, 24
@@ -1741,8 +1741,8 @@ _080D9D5C:
pop {r0}
bx r0
.align 2, 0
-_080D9D64: .4byte gUnknown_030041B0
-_080D9D68: .4byte gUnknown_030041B8
+_080D9D64: .4byte gBattle_BG3_X
+_080D9D68: .4byte gBattle_BG3_Y
_080D9D6C: .4byte gBattleAnimArgs
thumb_func_end sub_80D9C80
diff --git a/asm/flying.s b/asm/flying.s
index 99cb11913..ce3fb050b 100755
--- a/asm/flying.s
+++ b/asm/flying.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/ghost.s b/asm/ghost.s
index 0db176d08..2934f6dbd 100755
--- a/asm/ghost.s
+++ b/asm/ghost.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1334,7 +1334,7 @@ _080DE584:
_080DE59C:
movs r2, 0x2
movs r3, 0x6
- bl sub_8089944
+ bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
@@ -1507,7 +1507,7 @@ _080DE6E8:
beq _080DE740
b _080DE7AA
_080DE6EE:
- ldr r1, _080DE710 @ =gUnknown_03004DC0
+ ldr r1, _080DE710 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
@@ -1523,7 +1523,7 @@ _080DE6EE:
ldr r0, _080DE714 @ =0x0000fdff
b _080DE720
.align 2, 0
-_080DE710: .4byte gUnknown_03004DC0
+_080DE710: .4byte gScanlineEffect
_080DE714: .4byte 0x0000fdff
_080DE718:
movs r2, 0x80
diff --git a/asm/ground.s b/asm/ground.s
index fd4cecbfd..3d4b69a9f 100755
--- a/asm/ground.s
+++ b/asm/ground.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -631,7 +631,7 @@ _080E13D6:
_080E13F8: .4byte gBattle_BG2_Y
_080E13FC: .4byte gSprites
_080E1400:
- ldr r1, _080E1410 @ =gUnknown_03004DC0
+ ldr r1, _080E1410 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E1406:
@@ -640,7 +640,7 @@ _080E1406:
strh r0, [r4, 0x8]
b _080E1432
.align 2, 0
-_080E1410: .4byte gUnknown_03004DC0
+_080E1410: .4byte gScanlineEffect
_080E1414:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -925,7 +925,7 @@ _080E161C:
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E1662
- ldr r1, _080E1658 @ =gUnknown_03004DC0
+ ldr r1, _080E1658 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080E164A:
@@ -935,7 +935,7 @@ _080E164A:
b _080E1662
.align 2, 0
_080E1654: .4byte gSprites
-_080E1658: .4byte gUnknown_03004DC0
+_080E1658: .4byte gScanlineEffect
_080E165C:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -980,7 +980,7 @@ _080E169C:
asrs r4, r0, 16
cmp r2, r0
bge _080E16C8
- ldr r5, _080E1720 @ =gUnknown_03004DE0
+ ldr r5, _080E1720 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1003,7 +1003,7 @@ _080E16C8:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080E16F6
- ldr r4, _080E1720 @ =gUnknown_03004DE0
+ ldr r4, _080E1720 @ =gScanlineEffectRegBuffers
lsls r0, r3, 16
asrs r0, 16
adds r3, r0, 0
@@ -1035,7 +1035,7 @@ _080E16F6:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
add sp, 0xC
pop {r4-r6}
pop {r0}
@@ -1043,7 +1043,7 @@ _080E16F6:
.align 2, 0
_080E1718: .4byte gBattle_BG2_X
_080E171C: .4byte REG_BG2HOFS
-_080E1720: .4byte gUnknown_03004DE0
+_080E1720: .4byte gScanlineEffectRegBuffers
_080E1724: .4byte 0xa2600001
thumb_func_end sub_80E1668
@@ -1243,14 +1243,14 @@ _080E189C:
beq _080E18C8
cmp r0, 0x5
bne _080E1908
- ldr r0, _080E18C0 @ =gUnknown_030041B0
+ ldr r0, _080E18C0 @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, _080E18C4 @ =sub_80E1934
b _080E1926
.align 2, 0
_080E18BC: .4byte gAnimMovePower
-_080E18C0: .4byte gUnknown_030041B0
+_080E18C0: .4byte gBattle_BG3_X
_080E18C4: .4byte sub_80E1934
_080E18C8:
movs r0, 0
@@ -1351,16 +1351,16 @@ _080E1962:
ands r0, r1
cmp r0, 0
bne _080E198C
- ldr r1, _080E1988 @ =gUnknown_030041B0
+ ldr r1, _080E1988 @ =gBattle_BG3_X
ldrh r0, [r3, 0x26]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080E1996
.align 2, 0
-_080E1988: .4byte gUnknown_030041B0
+_080E1988: .4byte gBattle_BG3_X
_080E198C:
- ldr r0, _080E19B4 @ =gUnknown_030041B0
+ ldr r0, _080E19B4 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x26]
subs r1, r2
@@ -1382,7 +1382,7 @@ _080E1996:
strh r0, [r3, 0x24]
b _080E1A0C
.align 2, 0
-_080E19B4: .4byte gUnknown_030041B0
+_080E19B4: .4byte gBattle_BG3_X
_080E19B8:
ldrh r0, [r3, 0xA]
adds r0, 0x1
@@ -1397,16 +1397,16 @@ _080E19B8:
ands r1, r0
cmp r1, 0
bne _080E19E4
- ldr r1, _080E19E0 @ =gUnknown_030041B0
+ ldr r1, _080E19E0 @ =gBattle_BG3_X
ldrh r0, [r3, 0x24]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080E19EE
.align 2, 0
-_080E19E0: .4byte gUnknown_030041B0
+_080E19E0: .4byte gBattle_BG3_X
_080E19E4:
- ldr r0, _080E1A14 @ =gUnknown_030041B0
+ ldr r0, _080E1A14 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x24]
subs r1, r2
@@ -1433,9 +1433,9 @@ _080E1A0C:
strh r0, [r3, 0x8]
b _080E1A24
.align 2, 0
-_080E1A14: .4byte gUnknown_030041B0
+_080E1A14: .4byte gBattle_BG3_X
_080E1A18:
- ldr r1, _080E1A28 @ =gUnknown_030041B0
+ ldr r1, _080E1A28 @ =gBattle_BG3_X
ldrh r0, [r3, 0x22]
strh r0, [r1]
adds r0, r2, 0
@@ -1444,7 +1444,7 @@ _080E1A24:
pop {r0}
bx r0
.align 2, 0
-_080E1A28: .4byte gUnknown_030041B0
+_080E1A28: .4byte gBattle_BG3_X
thumb_func_end sub_80E1934
thumb_func_start sub_80E1A2C
@@ -1719,10 +1719,10 @@ _080E1BE2:
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0xC]
- ldr r2, _080E1C50 @ =gUnknown_030041B0
+ ldr r2, _080E1C50 @ =gBattle_BG3_X
ldrh r0, [r4, 0xA]
strh r0, [r2]
- ldr r0, _080E1C54 @ =gUnknown_030041B8
+ ldr r0, _080E1C54 @ =gBattle_BG3_Y
strh r1, [r0]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0xE]
@@ -1736,8 +1736,8 @@ _080E1C40: .4byte gAnimBankAttacker
_080E1C44: .4byte sub_80E1C58
_080E1C48: .4byte gTasks
_080E1C4C: .4byte 0x000001ff
-_080E1C50: .4byte gUnknown_030041B0
-_080E1C54: .4byte gUnknown_030041B8
+_080E1C50: .4byte gBattle_BG3_X
+_080E1C54: .4byte gBattle_BG3_Y
thumb_func_end sub_80E1BB0
thumb_func_start sub_80E1C58
@@ -1757,10 +1757,10 @@ sub_80E1C58: @ 80E1C58
ldrsh r0, [r2, r4]
cmp r1, r0
bne _080E1C98
- ldr r0, _080E1C90 @ =gUnknown_030041B0
+ ldr r0, _080E1C90 @ =gBattle_BG3_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080E1C94 @ =gUnknown_030041B8
+ ldr r0, _080E1C94 @ =gBattle_BG3_Y
strh r1, [r0]
adds r0, r3, 0
bl DestroyTask
@@ -1768,13 +1768,13 @@ sub_80E1C58: @ 80E1C58
.align 2, 0
_080E1C88: .4byte gTasks
_080E1C8C: .4byte gBattleAnimArgs
-_080E1C90: .4byte gUnknown_030041B0
-_080E1C94: .4byte gUnknown_030041B8
+_080E1C90: .4byte gBattle_BG3_X
+_080E1C94: .4byte gBattle_BG3_Y
_080E1C98:
- ldr r1, _080E1CAC @ =gUnknown_030041B0
+ ldr r1, _080E1CAC @ =gBattle_BG3_X
ldrh r0, [r2, 0xA]
strh r0, [r1]
- ldr r1, _080E1CB0 @ =gUnknown_030041B8
+ ldr r1, _080E1CB0 @ =gBattle_BG3_Y
ldrh r0, [r2, 0xC]
strh r0, [r1]
_080E1CA4:
@@ -1782,8 +1782,8 @@ _080E1CA4:
pop {r0}
bx r0
.align 2, 0
-_080E1CAC: .4byte gUnknown_030041B0
-_080E1CB0: .4byte gUnknown_030041B8
+_080E1CAC: .4byte gBattle_BG3_X
+_080E1CB0: .4byte gBattle_BG3_Y
thumb_func_end sub_80E1C58
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/ice.s b/asm/ice.s
index 557be621c..032da59c3 100755
--- a/asm/ice.s
+++ b/asm/ice.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/m4a_3.s b/asm/m4a_3.s
index a842ae925..82b6a2467 100644
--- a/asm/m4a_3.s
+++ b/asm/m4a_3.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/gba_constants.inc"
.include "constants/m4a_constants.inc"
diff --git a/asm/normal.s b/asm/normal.s
index a800b348a..fffbc3870 100755
--- a/asm/normal.s
+++ b/asm/normal.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1103,15 +1103,15 @@ _080E24F0:
beq _080E2508
b _080E2518
_080E24F6:
- ldr r1, _080E24FC @ =gUnknown_030041B0
+ ldr r1, _080E24FC @ =gBattle_BG3_X
b _080E250A
.align 2, 0
-_080E24FC: .4byte gUnknown_030041B0
+_080E24FC: .4byte gBattle_BG3_X
_080E2500:
- ldr r1, _080E2504 @ =gUnknown_030041B8
+ ldr r1, _080E2504 @ =gBattle_BG3_Y
b _080E250A
.align 2, 0
-_080E2504: .4byte gUnknown_030041B8
+_080E2504: .4byte gBattle_BG3_Y
_080E2508:
ldr r1, _080E2514 @ =gSpriteCoordOffsetX
_080E250A:
@@ -1359,10 +1359,10 @@ sub_80E26BC: @ 80E26BC
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x18]
- ldr r4, _080E2704 @ =gUnknown_030041B0
+ ldr r4, _080E2704 @ =gBattle_BG3_X
ldrh r1, [r3]
strh r1, [r4]
- ldr r4, _080E2708 @ =gUnknown_030041B8
+ ldr r4, _080E2708 @ =gBattle_BG3_Y
ldrh r1, [r3, 0x2]
strh r1, [r4]
ldr r1, _080E270C @ =sub_80E2710
@@ -1374,8 +1374,8 @@ sub_80E26BC: @ 80E26BC
.align 2, 0
_080E26FC: .4byte gTasks
_080E2700: .4byte gBattleAnimArgs
-_080E2704: .4byte gUnknown_030041B0
-_080E2708: .4byte gUnknown_030041B8
+_080E2704: .4byte gBattle_BG3_X
+_080E2708: .4byte gBattle_BG3_Y
_080E270C: .4byte sub_80E2710
thumb_func_end sub_80E26BC
@@ -1395,7 +1395,7 @@ sub_80E2710: @ 80E2710
mov r12, r1
cmp r0, 0
bne _080E2796
- ldr r0, _080E2744 @ =gUnknown_030041B0
+ ldr r0, _080E2744 @ =gBattle_BG3_X
ldrh r2, [r0]
movs r7, 0x8
ldrsh r1, [r3, r7]
@@ -1407,12 +1407,12 @@ sub_80E2710: @ 80E2710
b _080E274A
.align 2, 0
_080E2740: .4byte gTasks
-_080E2744: .4byte gUnknown_030041B0
+_080E2744: .4byte gBattle_BG3_X
_080E2748:
ldrh r0, [r3, 0x8]
_080E274A:
strh r0, [r6]
- ldr r2, _080E2768 @ =gUnknown_030041B8
+ ldr r2, _080E2768 @ =gBattle_BG3_Y
ldrh r3, [r2]
lsls r1, r5, 2
adds r0, r1, r5
@@ -1426,7 +1426,7 @@ _080E274A:
movs r0, 0
b _080E2770
.align 2, 0
-_080E2768: .4byte gUnknown_030041B8
+_080E2768: .4byte gBattle_BG3_Y
_080E276C:
ldrh r0, [r4, 0xA]
negs r0, r0
@@ -3905,13 +3905,13 @@ sub_80E3AD0: @ 80E3AD0
ldrh r7, [r1, 0x1E]
adds r2, r7
strh r2, [r1, 0x1E]
- ldr r6, _080E3B40 @ =gUnknown_030041B0
+ ldr r6, _080E3B40 @ =gBattle_BG3_X
lsls r0, r3, 16
asrs r0, 24
ldrh r4, [r6]
adds r0, r4
strh r0, [r6]
- ldr r4, _080E3B44 @ =gUnknown_030041B8
+ ldr r4, _080E3B44 @ =gBattle_BG3_Y
lsls r0, r2, 16
asrs r0, 24
ldrh r7, [r4]
@@ -3942,8 +3942,8 @@ _080E3B36:
bx r0
.align 2, 0
_080E3B3C: .4byte gTasks
-_080E3B40: .4byte gUnknown_030041B0
-_080E3B44: .4byte gUnknown_030041B8
+_080E3B40: .4byte gBattle_BG3_X
+_080E3B44: .4byte gBattle_BG3_Y
_080E3B48: .4byte gBattleAnimArgs
thumb_func_end sub_80E3AD0
diff --git a/asm/pc_screen_effect.s b/asm/pc_screen_effect.s
index 665978d19..9d36df66c 100755
--- a/asm/pc_screen_effect.s
+++ b/asm/pc_screen_effect.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/poison.s b/asm/poison.s
deleted file mode 100755
index 234348df2..000000000
--- a/asm/poison.s
+++ /dev/null
@@ -1,364 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ poison
-
- thumb_func_start sub_80D9D70
-sub_80D9D70: @ 80D9D70
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080D9DC4 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D9D86
- adds r0, r5, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_080D9D86:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80787B0
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x2E]
- ldr r4, _080D9DC8 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080D9DCC @ =0x0000ffe2
- strh r0, [r5, 0x38]
- adds r0, r5, 0
- bl sub_80786EC
- ldr r0, _080D9DD0 @ =sub_80D9DD4
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9DC4: .4byte gBattleAnimArgs
-_080D9DC8: .4byte gAnimBankTarget
-_080D9DCC: .4byte 0x0000ffe2
-_080D9DD0: .4byte sub_80D9DD4
- thumb_func_end sub_80D9D70
-
- thumb_func_start sub_80D9DD4
-sub_80D9DD4: @ 80D9DD4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080D9DE8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9DE8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9DD4
-
- thumb_func_start sub_80D9DF0
-sub_80D9DF0: @ 80D9DF0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r5, _080D9E64 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080D9E08
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_080D9E08:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80787B0
- ldr r0, _080D9E68 @ =gAnimBankTarget
- ldrb r0, [r0]
- mov r6, sp
- adds r6, 0x2
- movs r1, 0x1
- mov r2, sp
- adds r3, r6, 0
- bl sub_807A3FC
- ldr r0, _080D9E6C @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D9E36
- ldrh r0, [r5, 0x8]
- negs r0, r0
- strh r0, [r5, 0x8]
-_080D9E36:
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- mov r1, sp
- ldrh r0, [r5, 0x8]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0xA]
- ldrh r6, [r6]
- adds r0, r6
- strh r0, [r4, 0x36]
- ldr r0, _080D9E70 @ =0x0000ffe2
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_80786EC
- ldr r0, _080D9E74 @ =sub_80D9E78
- str r0, [r4, 0x1C]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9E64: .4byte gBattleAnimArgs
-_080D9E68: .4byte gAnimBankTarget
-_080D9E6C: .4byte gAnimBankAttacker
-_080D9E70: .4byte 0x0000ffe2
-_080D9E74: .4byte sub_80D9E78
- thumb_func_end sub_80D9DF0
-
- thumb_func_start sub_80D9E78
-sub_80D9E78: @ 80D9E78
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080D9E8C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9E8C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9E78
-
- thumb_func_start sub_80D9E94
-sub_80D9E94: @ 80D9E94
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080D9EE0 @ =gBattleAnimArgs
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl sub_8078A5C
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0x38]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl __divsi3
- strh r0, [r4, 0x3A]
- ldr r0, _080D9EE4 @ =sub_80D9EE8
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9EE0: .4byte gBattleAnimArgs
-_080D9EE4: .4byte sub_80D9EE8
- thumb_func_end sub_80D9E94
-
- thumb_func_start sub_80D9EE8
-sub_80D9EE8: @ 80D9EE8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078394
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x38]
- subs r0, r1
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x3A]
- subs r0, r1
- strh r0, [r4, 0x32]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D9F0E
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9F0E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9EE8
-
- thumb_func_start sub_80D9F14
-sub_80D9F14: @ 80D9F14
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D9F74 @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_807A3FC
- ldr r0, _080D9F78 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D9F40
- ldr r1, _080D9F7C @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080D9F40:
- ldr r0, _080D9F7C @ =gBattleAnimArgs
- ldrh r2, [r0]
- ldrh r1, [r4, 0x20]
- adds r2, r1
- strh r2, [r4, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r3, [r4, 0x22]
- adds r1, r3
- strh r1, [r4, 0x22]
- ldrh r3, [r0, 0x8]
- strh r3, [r4, 0x2E]
- ldrh r0, [r0, 0x4]
- adds r2, r0
- strh r2, [r4, 0x32]
- adds r1, r3
- strh r1, [r4, 0x36]
- ldr r0, _080D9F80 @ =sub_8078B34
- str r0, [r4, 0x1C]
- ldr r1, _080D9F84 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9F74: .4byte gAnimBankTarget
-_080D9F78: .4byte gAnimBankAttacker
-_080D9F7C: .4byte gBattleAnimArgs
-_080D9F80: .4byte sub_8078B34
-_080D9F84: .4byte DestroyAnimSprite
- thumb_func_end sub_80D9F14
-
- thumb_func_start sub_80D9F88
-sub_80D9F88: @ 80D9F88
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080D9FA0 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080D9FA4
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078764
- b _080D9FDA
- .align 2, 0
-_080D9FA0: .4byte gBattleAnimArgs
-_080D9FA4:
- ldr r0, _080D9FE4 @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r4, 0
- adds r2, 0x20
- adds r3, r4, 0
- adds r3, 0x22
- movs r1, 0x1
- bl sub_807A3FC
- ldr r0, _080D9FE8 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D9FCA
- ldrh r0, [r5]
- negs r0, r0
- strh r0, [r5]
-_080D9FCA:
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
-_080D9FDA:
- ldr r0, _080D9FEC @ =sub_80D9FF0
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9FE4: .4byte gAnimBankTarget
-_080D9FE8: .4byte gAnimBankAttacker
-_080D9FEC: .4byte sub_80D9FF0
- thumb_func_end sub_80D9F88
-
- thumb_func_start sub_80D9FF0
-sub_80D9FF0: @ 80D9FF0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0xB
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x4
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- adds r0, 0x30
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DA02C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DA02C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9FF0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index fd5555524..779a5a0ed 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s
index 5eea28b99..00f8cfe14 100644
--- a/asm/pokedex_cry_screen.s
+++ b/asm/pokedex_cry_screen.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s
index a8b8fa401..6995dc62b 100644
--- a/asm/pokemon_item_effect.s
+++ b/asm/pokemon_item_effect.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index d878821cb..2ac873fcd 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 7c766addc..ca65b2e06 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -10956,8 +10956,8 @@ sub_80F5B50: @ 80F5B50
_080F5B68: .4byte gUnknown_083DFEC4
_080F5B6C: .4byte 0x00009345
_080F5B70:
- bl dp12_8087EA4
- ldr r0, _080F5BA8 @ =gUnknown_03004DE0
+ bl ScanlineEffect_Clear
+ ldr r0, _080F5BA8 @ =gScanlineEffectRegBuffers
movs r2, 0xEF
movs r3, 0xF4
lsls r3, 3
@@ -10984,7 +10984,7 @@ _080F5B82:
movs r0, 0x1
b _080F5BCE
.align 2, 0
-_080F5BA8: .4byte gUnknown_03004DE0
+_080F5BA8: .4byte gScanlineEffectRegBuffers
_080F5BAC: .4byte gUnknown_083DFEC4
_080F5BB0: .4byte 0x00009345
_080F5BB4:
@@ -10995,7 +10995,7 @@ _080F5BB4:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
@@ -11013,14 +11013,14 @@ _080F5BD8: .4byte gUnknown_083E4990
thumb_func_start sub_80F5BDC
sub_80F5BDC: @ 80F5BDC
push {lr}
- ldr r1, _080F5BEC @ =gUnknown_03004DC0
+ ldr r1, _080F5BEC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
- bl sub_8089668
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
-_080F5BEC: .4byte gUnknown_03004DC0
+_080F5BEC: .4byte gScanlineEffect
thumb_func_end sub_80F5BDC
thumb_func_start sub_80F5BF0
@@ -11045,7 +11045,7 @@ sub_80F5BF0: @ 80F5BF0
adds r0, r4, 0
bl sub_80F5A1C
movs r6, 0
- ldr r1, _080F5CC4 @ =gUnknown_03004DE0
+ ldr r1, _080F5CC4 @ =gScanlineEffectRegBuffers
mov r12, r1
movs r0, 0xF0
lsls r0, 3
@@ -11128,7 +11128,7 @@ _080F5CA6:
_080F5CB8: .4byte gUnknown_083DFEC4
_080F5CBC: .4byte 0x00009344
_080F5CC0: .4byte 0x0000911c
-_080F5CC4: .4byte gUnknown_03004DE0
+_080F5CC4: .4byte gScanlineEffectRegBuffers
_080F5CC8: .4byte 0x0000ffff
_080F5CCC: .4byte 0x00009130
_080F5CD0: .4byte 0x00009132
@@ -11164,7 +11164,7 @@ sub_80F5CDC: @ 80F5CDC
lsls r0, 17
lsrs r5, r0, 16
movs r7, 0
- ldr r1, _080F5DBC @ =gUnknown_03004DE0
+ ldr r1, _080F5DBC @ =gScanlineEffectRegBuffers
mov r12, r1
movs r4, 0xF0
lsls r4, 3
@@ -11248,7 +11248,7 @@ _080F5DA0:
_080F5DB0: .4byte gUnknown_083DFEC4
_080F5DB4: .4byte 0x00009344
_080F5DB8: .4byte 0x0000911c
-_080F5DBC: .4byte gUnknown_03004DE0
+_080F5DBC: .4byte gScanlineEffectRegBuffers
_080F5DC0: .4byte 0x0000ffff
_080F5DC4: .4byte 0x00009130
_080F5DC8: .4byte 0x00009132
diff --git a/asm/psychic.s b/asm/psychic.s
index 20e558bf6..f91ce950e 100755
--- a/asm/psychic.s
+++ b/asm/psychic.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1588,7 +1588,7 @@ _080DC380:
adds r0, 0x40
cmp r1, r0
bgt _080DC3BA
- ldr r5, _080DC3E8 @ =gUnknown_03004DE0
+ ldr r5, _080DC3E8 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1621,7 +1621,7 @@ _080DC3BA:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldr r0, _080DC3F0 @ =sub_80DC3F4
str r0, [r4]
add sp, 0xC
@@ -1631,7 +1631,7 @@ _080DC3BA:
.align 2, 0
_080DC3E0: .4byte gBattle_BG2_X
_080DC3E4: .4byte REG_BG2HOFS
-_080DC3E8: .4byte gUnknown_03004DE0
+_080DC3E8: .4byte gScanlineEffectRegBuffers
_080DC3EC: .4byte 0xa2600001
_080DC3F0: .4byte sub_80DC3F4
thumb_func_end sub_80DC2D4
@@ -1676,7 +1676,7 @@ _080DC426:
ldr r0, _080DC470 @ =gSineTable
mov r9, r0
movs r7, 0x3
- ldr r1, _080DC474 @ =gUnknown_03004DE0
+ ldr r1, _080DC474 @ =gScanlineEffectRegBuffers
mov r12, r1
movs r2, 0xF0
lsls r2, 3
@@ -1704,7 +1704,7 @@ _080DC448:
b _080DC484
.align 2, 0
_080DC470: .4byte gSineTable
-_080DC474: .4byte gUnknown_03004DE0
+_080DC474: .4byte gScanlineEffectRegBuffers
_080DC478:
cmp r3, 0
bge _080DC488
@@ -1753,7 +1753,7 @@ _080DC4BE:
ble _080DC4E6
b _080DC4D4
_080DC4CE:
- ldr r1, _080DC4DC @ =gUnknown_03004DC0
+ ldr r1, _080DC4DC @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080DC4D4:
@@ -1762,7 +1762,7 @@ _080DC4D4:
strh r0, [r5, 0x8]
b _080DC4E6
.align 2, 0
-_080DC4DC: .4byte gUnknown_03004DC0
+_080DC4DC: .4byte gScanlineEffect
_080DC4E0:
adds r0, r2, 0
bl DestroyAnimVisualTask
diff --git a/asm/rock.s b/asm/rock.s
index 923c842be..98afb53e6 100755
--- a/asm/rock.s
+++ b/asm/rock.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -1549,7 +1549,7 @@ sub_80DDA8C: @ 80DDA8C
movs r0, 0xC8
strh r0, [r5, 0xA]
_080DDAAE:
- ldr r4, _080DDAEC @ =gUnknown_030041B8
+ ldr r4, _080DDAEC @ =gBattle_BG3_Y
movs r1, 0xA
ldrsh r0, [r5, r1]
movs r1, 0xA
@@ -1577,7 +1577,7 @@ _080DDADA:
bx r0
.align 2, 0
_080DDAE8: .4byte gTasks
-_080DDAEC: .4byte gUnknown_030041B8
+_080DDAEC: .4byte gBattle_BG3_Y
thumb_func_end sub_80DDA8C
thumb_func_start sub_80DDAF0
@@ -1600,7 +1600,7 @@ sub_80DDAF0: @ 80DDAF0
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, _080DDB60 @ =gUnknown_030041B8
+ ldr r0, _080DDB60 @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r4, 0xC]
_080DDB1C:
@@ -1609,7 +1609,7 @@ _080DDB1C:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0xA]
- ldr r6, _080DDB60 @ =gUnknown_030041B8
+ ldr r6, _080DDB60 @ =gBattle_BG3_Y
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0x4
@@ -1635,7 +1635,7 @@ _080DDB54:
bx r0
.align 2, 0
_080DDB5C: .4byte gTasks
-_080DDB60: .4byte gUnknown_030041B8
+_080DDB60: .4byte gBattle_BG3_Y
_080DDB64: .4byte gBattleAnimArgs
_080DDB68: .4byte 0x00000fff
thumb_func_end sub_80DDAF0
diff --git a/asm/unk_text_8095904.s b/asm/unk_text_8095904.s
index f144eab26..00c81faca 100755
--- a/asm/unk_text_8095904.s
+++ b/asm/unk_text_8095904.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
diff --git a/asm/water.s b/asm/water.s
index d72f9438c..45fb7f82a 100755
--- a/asm/water.s
+++ b/asm/water.s
@@ -1,5 +1,5 @@
.include "constants/gba_constants.inc"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
@@ -300,7 +300,7 @@ _080D3D9C:
movs r3, 0
movs r2, 0x10
ldrsh r0, [r4, r2]
- ldr r1, _080D3E6C @ =gUnknown_03004DE0
+ ldr r1, _080D3E6C @ =gScanlineEffectRegBuffers
mov r12, r1
cmp r3, r0
bge _080D3DDA
@@ -337,7 +337,7 @@ _080D3DDA:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3E14
- ldr r5, _080D3E6C @ =gUnknown_03004DE0
+ ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -366,7 +366,7 @@ _080D3E14:
asrs r0, r2, 16
cmp r0, 0x9F
bgt _080D3E4A
- ldr r5, _080D3E6C @ =gUnknown_03004DE0
+ ldr r5, _080D3E6C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -407,7 +407,7 @@ _080D3E4A:
ldrh r0, [r4, 0xA]
b _080D3E8A
.align 2, 0
-_080D3E6C: .4byte gUnknown_03004DE0
+_080D3E6C: .4byte gScanlineEffectRegBuffers
_080D3E70: .4byte 0x0000ffff
_080D3E74:
lsls r0, r3, 16
@@ -436,7 +436,7 @@ _080D3E8A:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_80895F8
+ bl ScanlineEffect_SetParams
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -475,8 +475,8 @@ _080D3EE8:
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080D3F1C
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3EF6:
lsls r1, r3, 16
asrs r1, 16
@@ -505,8 +505,8 @@ _080D3F1C:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3F50
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3F2E:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -531,8 +531,8 @@ _080D3F50:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080D4032
- ldr r6, _080D3F80 @ =gUnknown_03004DE0
- ldr r5, _080D3F84 @ =gUnknown_03004DC0
+ ldr r6, _080D3F80 @ =gScanlineEffectRegBuffers
+ ldr r5, _080D3F84 @ =gScanlineEffect
_080D3F5E:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -551,16 +551,16 @@ _080D3F5E:
ble _080D3F5E
b _080D4032
.align 2, 0
-_080D3F80: .4byte gUnknown_03004DE0
-_080D3F84: .4byte gUnknown_03004DC0
+_080D3F80: .4byte gScanlineEffectRegBuffers
+_080D3F84: .4byte gScanlineEffect
_080D3F88:
movs r3, 0
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080D3FBC
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3F96:
lsls r1, r3, 16
asrs r1, 16
@@ -589,8 +589,8 @@ _080D3FBC:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080D3FF0
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3FCE:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -615,8 +615,8 @@ _080D3FF0:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080D401C
- ldr r6, _080D403C @ =gUnknown_03004DE0
- ldr r5, _080D4040 @ =gUnknown_03004DC0
+ ldr r6, _080D403C @ =gScanlineEffectRegBuffers
+ ldr r5, _080D4040 @ =gScanlineEffect
_080D3FFE:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -640,7 +640,7 @@ _080D401C:
negs r0, r0
cmp r1, r0
bne _080D4032
- bl remove_some_task
+ bl ScanlineEffect_Stop
adds r0, r7, 0
bl DestroyTask
_080D4032:
@@ -649,8 +649,8 @@ _080D4032:
pop {r0}
bx r0
.align 2, 0
-_080D403C: .4byte gUnknown_03004DE0
-_080D4040: .4byte gUnknown_03004DC0
+_080D403C: .4byte gScanlineEffectRegBuffers
+_080D4040: .4byte gScanlineEffect
thumb_func_end sub_80D3D68
thumb_func_start sub_80D4044
diff --git a/asm/wisp_fire.s b/asm/wisp_fire.s
deleted file mode 100755
index a6407589f..000000000
--- a/asm/wisp_fire.s
+++ /dev/null
@@ -1,678 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- @ wisp_fire
-
- thumb_func_start sub_80D5CC0
-sub_80D5CC0: @ 80D5CC0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080D5CD8
- ldr r0, _080D5D4C @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r4, 0x30]
- adds r0, r1, 0x1
- strh r0, [r4, 0x2E]
-_080D5CD8:
- movs r0, 0xC0
- lsls r0, 1
- adds r1, r0, 0
- ldrh r2, [r4, 0x34]
- adds r1, r2
- strh r1, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r0, 0xA0
- strh r0, [r4, 0x36]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- lsls r1, 16
- asrs r1, 24
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- ldrh r1, [r4, 0x36]
- lsls r1, 16
- asrs r1, 24
- bl Cos
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x30]
- adds r2, r0, 0x7
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r4, 0x30]
- ldr r0, _080D5D50 @ =gMain
- ldr r1, _080D5D54 @ =0x0000043d
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080D5D84
- adds r0, r2, 0
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x83
- bls _080D5D5C
- ldr r0, _080D5D58 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- b _080D5DA0
- .align 2, 0
-_080D5D4C: .4byte gBattleAnimArgs
-_080D5D50: .4byte gMain
-_080D5D54: .4byte 0x0000043d
-_080D5D58: .4byte gAnimBankTarget
-_080D5D5C:
- ldr r0, _080D5D80 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl sub_8079ED4
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x5]
- b _080D5DA0
- .align 2, 0
-_080D5D80: .4byte gAnimBankTarget
-_080D5D84:
- adds r0, r2, 0
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x83
- bls _080D5D98
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
- b _080D5D9E
-_080D5D98:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
-_080D5D9E:
- strb r0, [r1]
-_080D5DA0:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080D5DC8
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080D5DC8:
- movs r2, 0x32
- ldrsh r0, [r4, r2]
- cmp r0, 0x1E
- bne _080D5DD6
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D5DD6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D5CC0
-
- thumb_func_start sub_80D5DDC
-sub_80D5DDC: @ 80D5DDC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080D5E3C @ =gTasks
- adds r4, r1, r0
- ldr r0, _080D5E40 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- movs r2, 0x1
- negs r2, r2
- adds r1, r2, 0
- cmp r0, 0
- bne _080D5E02
- movs r1, 0x1
-_080D5E02:
- strh r1, [r4, 0x20]
- ldr r0, _080D5E44 @ =gAnimBankTarget
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x1
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- movs r0, 0x3
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x26]
- ldr r0, _080D5E48 @ =sub_80D5E4C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D5E3C: .4byte gTasks
-_080D5E40: .4byte gAnimBankAttacker
-_080D5E44: .4byte gAnimBankTarget
-_080D5E48: .4byte sub_80D5E4C
- thumb_func_end sub_80D5DDC
-
- thumb_func_start sub_80D5E4C
-sub_80D5E4C: @ 80D5E4C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080D5E70 @ =gTasks
- adds r2, r0, r1
- movs r0, 0x8
- ldrsh r3, [r2, r0]
- cmp r3, 0x1
- beq _080D5F14
- cmp r3, 0x1
- bgt _080D5E74
- cmp r3, 0
- beq _080D5E82
- b _080D6074
- .align 2, 0
-_080D5E70: .4byte gTasks
-_080D5E74:
- cmp r3, 0x2
- bne _080D5E7A
- b _080D5F9C
-_080D5E7A:
- cmp r3, 0x3
- bne _080D5E80
- b _080D6030
-_080D5E80:
- b _080D6074
-_080D5E82:
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- lsls r0, 1
- ldrh r5, [r2, 0x1C]
- adds r0, r5
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D5EB4
- strh r3, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D5EB0
- movs r0, 0x2
- b _080D5EB2
-_080D5EB0:
- ldr r0, _080D5F0C @ =0x0000fffe
-_080D5EB2:
- strh r0, [r2, 0x1E]
-_080D5EB4:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r7, 0x22
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _080D5EF6
- ldr r4, _080D5F10 @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080D5EC6:
- movs r1, 0xE
- ldrsh r0, [r2, r1]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r5, 0
- ldrsh r0, [r0, r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r7, [r2, 0x1C]
- adds r0, r7
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r5, 0x22
- ldrsh r1, [r2, r5]
- cmp r0, r1
- blt _080D5EC6
-_080D5EF6:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- beq _080D5F06
- b _080D6074
-_080D5F06:
- movs r0, 0
- strh r0, [r2, 0x1A]
- b _080D6020
- .align 2, 0
-_080D5F0C: .4byte 0x0000fffe
-_080D5F10: .4byte gSprites
-_080D5F14:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080D5F3C
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ands r0, r3
- lsls r0, 16
- cmp r0, 0
- beq _080D5F38
- movs r0, 0x2
- b _080D5F3A
-_080D5F38:
- ldr r0, _080D5F94 @ =0x0000fffe
-_080D5F3A:
- strh r0, [r2, 0x1E]
-_080D5F3C:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r7, 0x22
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bge _080D5F7E
- ldr r4, _080D5F98 @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080D5F4E:
- movs r1, 0xE
- ldrsh r0, [r2, r1]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r5, 0
- ldrsh r0, [r0, r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r7, [r2, 0x1C]
- adds r0, r7
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r5, 0x22
- ldrsh r1, [r2, r5]
- cmp r0, r1
- blt _080D5F4E
-_080D5F7E:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x60
- bne _080D6074
- movs r0, 0
- strh r0, [r2, 0x1A]
- b _080D6020
- .align 2, 0
-_080D5F94: .4byte 0x0000fffe
-_080D5F98: .4byte gSprites
-_080D5F9C:
- movs r7, 0x20
- ldrsh r1, [r2, r7]
- lsls r1, 1
- ldrh r0, [r2, 0x1C]
- subs r0, r1
- strh r0, [r2, 0x1C]
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D5FD0
- movs r0, 0
- strh r0, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D5FCC
- strh r3, [r2, 0x1E]
- b _080D5FD0
-_080D5FCC:
- ldr r0, _080D6028 @ =0x0000fffe
- strh r0, [r2, 0x1E]
-_080D5FD0:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _080D6012
- ldr r4, _080D602C @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
-_080D5FE2:
- movs r5, 0xE
- ldrsh r0, [r2, r5]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r7, 0
- ldrsh r0, [r0, r7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r2, 0x1E]
- ldrh r5, [r2, 0x1C]
- adds r0, r5
- strh r0, [r1, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r7, 0x22
- ldrsh r1, [r2, r7]
- cmp r0, r1
- blt _080D5FE2
-_080D6012:
- ldrh r0, [r2, 0x1A]
- adds r0, 0x1
- strh r0, [r2, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080D6074
-_080D6020:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- b _080D6074
- .align 2, 0
-_080D6028: .4byte 0x0000fffe
-_080D602C: .4byte gSprites
-_080D6030:
- movs r1, 0
- strh r1, [r2, 0xE]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bge _080D606E
- ldr r6, _080D607C @ =gSprites
- adds r3, r2, 0
- adds r3, 0x8
- movs r5, 0
-_080D6044:
- movs r7, 0xE
- ldrsh r0, [r2, r7]
- adds r0, 0xE
- lsls r0, 1
- adds r0, r3, r0
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r5, [r0, 0x24]
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r7, 0x22
- ldrsh r1, [r2, r7]
- cmp r0, r1
- blt _080D6044
-_080D606E:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080D6074:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D607C: .4byte gSprites
- thumb_func_end sub_80D5E4C
-
- thumb_func_start sub_80D6080
-sub_80D6080: @ 80D6080
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, sp
- bl sub_8078914
- mov r0, sp
- ldrb r0, [r0, 0x8]
- lsls r0, 4
- ldr r1, _080D60B0 @ =gBattleAnimArgs
- ldrb r2, [r1]
- ldrh r3, [r1, 0x2]
- movs r1, 0x10
- bl BlendPalette
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D60B0: .4byte gBattleAnimArgs
- thumb_func_end sub_80D6080
-
- thumb_func_start sub_80D60B4
-sub_80D60B4: @ 80D60B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080D610C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- mov r9, r1
- ldr r4, _080D6110 @ =gBattleAnimArgs
- mov r8, r4
- cmp r0, 0
- bne _080D60EA
- ldrh r0, [r4]
- strh r0, [r2, 0xA]
- ldrh r0, [r4, 0x2]
- strh r0, [r2, 0xC]
- ldrh r0, [r4, 0x4]
- strh r0, [r2, 0xE]
- ldrh r0, [r4, 0x6]
- strh r0, [r2, 0x10]
-_080D60EA:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- ldr r1, _080D6114 @ =gObjectBankIDs
- ldr r0, _080D6118 @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r0, r1
- ldrb r6, [r0]
- movs r5, 0x10
- ldrsh r0, [r2, r5]
- cmp r0, 0
- bne _080D6120
- ldr r4, _080D611C @ =gUnknown_083D9794
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- b _080D6126
- .align 2, 0
-_080D610C: .4byte gTasks
-_080D6110: .4byte gBattleAnimArgs
-_080D6114: .4byte gObjectBankIDs
-_080D6118: .4byte gAnimBankTarget
-_080D611C: .4byte gUnknown_083D9794
-_080D6120:
- ldr r4, _080D616C @ =gUnknown_083D97A4
- movs r3, 0x8
- ldrsh r0, [r2, r3]
-_080D6126:
- movs r1, 0xA
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- adds r0, r4
- ldrb r5, [r0]
- lsls r0, r7, 2
- adds r1, r0, r7
- lsls r1, 3
- add r1, r9
- movs r4, 0xE
- ldrsh r1, [r1, r4]
- mov r12, r0
- cmp r1, 0x1
- bne _080D6174
- ldr r2, _080D6170 @ =gSprites
- lsls r3, r6, 4
- adds r0, r3, r6
- lsls r0, 2
- adds r0, r2
- mov r10, r0
- mov r0, r8
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r5, 24
- asrs r0, 24
- muls r0, r1
- cmp r0, 0
- bge _080D6164
- negs r0, r0
-_080D6164:
- mov r5, r10
- strh r0, [r5, 0x26]
- b _080D618E
- .align 2, 0
-_080D616C: .4byte gUnknown_083D97A4
-_080D6170: .4byte gSprites
-_080D6174:
- ldr r3, _080D61C4 @ =gSprites
- lsls r4, r6, 4
- adds r2, r4, r6
- lsls r2, 2
- adds r2, r3
- lsls r0, r5, 24
- asrs r0, 24
- mov r5, r8
- ldrh r1, [r5, 0x2]
- muls r0, r1
- strh r0, [r2, 0x24]
- adds r2, r3, 0
- adds r3, r4, 0
-_080D618E:
- mov r1, r12
- adds r0, r1, r7
- lsls r0, 3
- add r0, r9
- movs r4, 0x8
- ldrsh r1, [r0, r4]
- movs r5, 0xA
- ldrsh r0, [r0, r5]
- cmp r1, r0
- bne _080D61B4
- adds r0, r3, r6
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- strh r1, [r0, 0x26]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080D61B4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D61C4: .4byte gSprites
- thumb_func_end sub_80D60B4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/scanline_effect.txt b/common_syms/scanline_effect.txt
new file mode 100644
index 000000000..280e7f891
--- /dev/null
+++ b/common_syms/scanline_effect.txt
@@ -0,0 +1,2 @@
+gScanlineEffect
+gScanlineEffectRegBuffers
diff --git a/config.mk b/config.mk
new file mode 100644
index 000000000..f0ad39f5b
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,44 @@
+### Build Configuration ###
+
+# Default variables
+VERSION ?= RUBY
+REVISION ?= 0
+LANGUAGE ?= ENGLISH
+COMPARE ?= 1
+
+# Version
+ifeq ($(VERSION), RUBY)
+ BUILD_NAME := ruby
+else
+ifeq ($(VERSION), SAPPHIRE)
+ BUILD_NAME := sapphire
+else
+ $(error unknown version $(VERSION))
+endif
+endif
+
+# Revision
+ifeq ($(REVISION), 0)
+ BUILD_NAME := $(BUILD_NAME)
+else
+ifeq ($(REVISION), 1)
+ BUILD_NAME := $(BUILD_NAME)_rev1
+else
+ifeq ($(REVISION), 2)
+ BUILD_NAME := $(BUILD_NAME)_rev2
+else
+ $(error unknown revision $(REVISION))
+endif
+endif
+endif
+
+# Language
+ifeq ($(LANGUAGE), ENGLISH)
+ BUILD_NAME := $(BUILD_NAME)
+else
+ifeq ($(LANGUAGE), GERMAN)
+ BUILD_NAME := $(BUILD_NAME)_de
+else
+ $(error unknown language $(LANGUAGE))
+endif
+endif
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 18fb0a64d..1569e87c6 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -10,8 +10,8 @@
#include "constants/species.h"
#include "constants/weather.h"
#include "constants/vars.h"
- .include "asm/macros.inc"
- .include "asm/macros/event.inc"
+ .include "include/macros.inc"
+ .include "include/macros/event.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
diff --git a/data-de/strings2.s b/data-de/strings2.s
index f15c039aa..52e964938 100644
--- a/data-de/strings2.s
+++ b/data-de/strings2.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 270386359..17b27fae5 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -3,9 +3,9 @@
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
- .include "asm/macros/battle_ai_script.inc"
+ .include "include/macros/battle_ai_script.inc"
.section script_data, "aw", %progbits
diff --git a/data/battle_anim.s b/data/battle_anim.s
index ed880ba77..270ba818a 100644
--- a/data/battle_anim.s
+++ b/data/battle_anim.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_anim_80A7E7C.s b/data/battle_anim_80A7E7C.s
index d7da20315..395b2e0ab 100644
--- a/data/battle_anim_80A7E7C.s
+++ b/data/battle_anim_80A7E7C.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index 4430cd372..8f62d92f6 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_anim_812C144.s b/data/battle_anim_812C144.s
index 188173252..dc0ebf9e3 100644
--- a/data/battle_anim_812C144.s
+++ b/data/battle_anim_812C144.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_anim_813F0F4.s b/data/battle_anim_813F0F4.s
index de29622ad..fd24d95b6 100644
--- a/data/battle_anim_813F0F4.s
+++ b/data/battle_anim_813F0F4.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index e0d11637d..2068db4ff 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,6 +1,6 @@
#include "constants/songs.h"
- .include "asm/macros.inc"
- .include "asm/macros/battle_anim.inc"
+ .include "include/macros.inc"
+ .include "include/macros/battle_anim.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
diff --git a/data/battle_interface.s b/data/battle_interface.s
index 040b1b9d3..3c79b9f4b 100644
--- a/data/battle_interface.s
+++ b/data/battle_interface.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_moves.s b/data/battle_moves.s
index 2c65bd3a5..b56457a96 100644
--- a/data/battle_moves.s
+++ b/data/battle_moves.s
@@ -1,6 +1,6 @@
#include "constants/battle_constants.h"
#include "constants/battle_move_effects.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 41edcb514..b04ebefe5 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -2,8 +2,8 @@
#include "constants/battle_constants.h"
#include "constants/moves.h"
#include "constants/songs.h"
- .include "asm/macros.inc"
- .include "asm/macros/battle_script.inc"
+ .include "include/macros.inc"
+ .include "include/macros/battle_script.inc"
.include "constants/constants.inc"
.include "constants/battle_script_constants.inc"
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index e113513d6..2c5c391ad 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,8 +1,8 @@
#include "constants/battle_constants.h"
#include "constants/items.h"
#include "constants/songs.h"
- .include "asm/macros.inc"
- .include "asm/macros/battle_script.inc"
+ .include "include/macros.inc"
+ .include "include/macros/battle_script.inc"
.include "constants/constants.inc"
.include "constants/battle_script_constants.inc"
diff --git a/data/contest.s b/data/contest.s
index 0ffcfc636..63988987d 100644
--- a/data/contest.s
+++ b/data/contest.s
@@ -1,6 +1,6 @@
#include "constants/moves.h"
#include "constants/species.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/contest_ai.s b/data/contest_ai.s
index 78f926df3..af13f50f8 100644
--- a/data/contest_ai.s
+++ b/data/contest_ai.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s
index 2c709ba09..b0b74c584 100644
--- a/data/contest_ai_scripts.s
+++ b/data/contest_ai_scripts.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "asm/macros/contest_ai_script.inc"
+ .include "include/macros.inc"
+ .include "include/macros/contest_ai_script.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
diff --git a/data/contest_effect.s b/data/contest_effect.s
index 7bcb36bf1..cd960fb52 100644
--- a/data/contest_effect.s
+++ b/data/contest_effect.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/contest_link_80C2020.s b/data/contest_link_80C2020.s
index 0b74e5908..f0ad06a32 100644
--- a/data/contest_link_80C2020.s
+++ b/data/contest_link_80C2020.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/cute_sketch.s b/data/cute_sketch.s
index b59a4b804..e3e75753d 100644
--- a/data/cute_sketch.s
+++ b/data/cute_sketch.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/data2a.s b/data/data2a.s
index bd455ce29..c4d6343d8 100644
--- a/data/data2a.s
+++ b/data/data2a.s
@@ -3,7 +3,7 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/data2b.s b/data/data2b.s
index e82e221c1..c7cd4dfcf 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/data_8393054.s b/data/data_8393054.s
index 5d2f79e07..38ba47b63 100644
--- a/data/data_8393054.s
+++ b/data/data_8393054.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/easy_chat.s b/data/easy_chat.s
index d41ffccce..bece4a499 100644
--- a/data/easy_chat.s
+++ b/data/easy_chat.s
@@ -1,7 +1,7 @@
#include "constants/easy_chat.h"
#include "constants/moves.h"
#include "constants/species.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
#define EC_DUPLICATES(count) (0xFF00 + (count))
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 1c8cff8d6..3b25ceab4 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -10,8 +10,8 @@
#include "constants/species.h"
#include "constants/weather.h"
#include "constants/vars.h"
- .include "asm/macros.inc"
- .include "asm/macros/event.inc"
+ .include "include/macros.inc"
+ .include "include/macros/event.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 900cc7009..45f8ce648 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "asm/macros/field_effect_script.inc"
+ .include "include/macros.inc"
+ .include "include/macros/field_effect_script.inc"
.include "constants/constants.inc"
.section script_data, "aw", %progbits
diff --git a/data/map_events.s b/data/map_events.s
index a06eb36d0..1531ec30e 100644
--- a/data/map_events.s
+++ b/data/map_events.s
@@ -5,7 +5,7 @@
#include "constants/secret_bases.h"
#include "constants/vars.h"
#include "constants/weather.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/maps.s b/data/maps.s
index 92f5544a1..727a48d0f 100644
--- a/data/maps.s
+++ b/data/maps.s
@@ -1,6 +1,6 @@
#include "constants/maps.h"
#include "constants/songs.h"
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/pc_screen_effect.s b/data/pc_screen_effect.s
index c33957945..1d6571149 100755
--- a/data/pc_screen_effect.s
+++ b/data/pc_screen_effect.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s
index 0d15169d0..410f0d4c5 100644
--- a/data/pokedex_area_screen.s
+++ b/data/pokedex_area_screen.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s
index 0908ddacb..14ea1cfb8 100644
--- a/data/pokedex_cry_screen.s
+++ b/data/pokedex_cry_screen.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index b765656f7..a3b7494dc 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/pokenav.s b/data/pokenav.s
index f84e45596..cb0e98472 100644
--- a/data/pokenav.s
+++ b/data/pokenav.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/roulette.s b/data/roulette.s
index 64b7b82e2..d19508fc3 100644
--- a/data/roulette.s
+++ b/data/roulette.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/sound_data.s b/data/sound_data.s
index cd33950e1..fff724e68 100644
--- a/data/sound_data.s
+++ b/data/sound_data.s
@@ -1,7 +1,7 @@
.section .rodata
- .include "asm/macros/m4a.inc"
- .include "asm/macros/music_voice.inc"
+ .include "include/macros/m4a.inc"
+ .include "include/macros/music_voice.inc"
.include "sound/voice_groups.inc"
.include "sound/keysplit_tables.inc"
diff --git a/data/strings2.s b/data/strings2.s
index cece71645..f73aba76f 100644
--- a/data/strings2.s
+++ b/data/strings2.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/data/tilesets.s b/data/tilesets.s
index 443686234..d9933dbf9 100644
--- a/data/tilesets.s
+++ b/data/tilesets.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.section .rodata
diff --git a/fonts.mk b/fonts.mk
index 86b7f4591..687c4ae2e 100644
--- a/fonts.mk
+++ b/fonts.mk
@@ -1,5 +1,3 @@
-RSFONT := tools/rsfont/rsfont
-
graphics/fonts/font0_jpn.1bpp: graphics/fonts/font0_jpn.png
$(RSFONT) $< $@ 240 1
diff --git a/sound/MPlayDef.s b/include/MPlayDef.s
index f5dd6484d..f5dd6484d 100644
--- a/sound/MPlayDef.s
+++ b/include/MPlayDef.s
diff --git a/include/data2.h b/include/data2.h
index 97cb4fd7a..9f6644714 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -3,7 +3,7 @@
#include "sprite.h"
-struct UnknownTaskStruct;
+struct ScanlineEffectParams;
struct MonCoords
{
@@ -42,7 +42,7 @@ extern u8 gSpeciesNames[][11];
extern const u8 gMoveNames[][13];
extern const u8 gAbilityNames[][13];
extern const u8 gTypeNames[][7];
-extern const struct UnknownTaskStruct gUnknown_081F9674;
+extern const struct ScanlineEffectParams gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
extern struct CompressedSpriteSheet gUnknown_081FAEA4;
extern struct CompressedSpritePalette gUnknown_081FAEAC;
diff --git a/asm/macros.inc b/include/macros.inc
index 6d8657892..f34353079 100644
--- a/asm/macros.inc
+++ b/include/macros.inc
@@ -1,9 +1,9 @@
- .include "asm/macros/asm.inc"
- .include "asm/macros/function.inc"
- .include "asm/macros/movement.inc"
- .include "asm/macros/pokemon_data.inc"
- .include "asm/macros/ec.inc"
- .include "asm/macros/map.inc"
+ .include "include/macros/asm.inc"
+ .include "include/macros/function.inc"
+ .include "include/macros/movement.inc"
+ .include "include/macros/pokemon_data.inc"
+ .include "include/macros/ec.inc"
+ .include "include/macros/map.inc"
.macro region_map_location x, y, width, height, name
.byte \x
diff --git a/asm/macros/asm.inc b/include/macros/asm.inc
index 26b2707ca..26b2707ca 100644
--- a/asm/macros/asm.inc
+++ b/include/macros/asm.inc
diff --git a/asm/macros/battle_ai_script.inc b/include/macros/battle_ai_script.inc
index 679e30340..679e30340 100644
--- a/asm/macros/battle_ai_script.inc
+++ b/include/macros/battle_ai_script.inc
diff --git a/asm/macros/battle_anim.inc b/include/macros/battle_anim.inc
index 4ff845032..4ff845032 100644
--- a/asm/macros/battle_anim.inc
+++ b/include/macros/battle_anim.inc
diff --git a/asm/macros/battle_script.inc b/include/macros/battle_script.inc
index e4fa0c454..e4fa0c454 100644
--- a/asm/macros/battle_script.inc
+++ b/include/macros/battle_script.inc
diff --git a/asm/macros/contest_ai_script.inc b/include/macros/contest_ai_script.inc
index 05d70e351..05d70e351 100644
--- a/asm/macros/contest_ai_script.inc
+++ b/include/macros/contest_ai_script.inc
diff --git a/asm/macros/ec.inc b/include/macros/ec.inc
index d3fd45c2f..d3fd45c2f 100644
--- a/asm/macros/ec.inc
+++ b/include/macros/ec.inc
diff --git a/asm/macros/event.inc b/include/macros/event.inc
index fcbd3a055..fcbd3a055 100644
--- a/asm/macros/event.inc
+++ b/include/macros/event.inc
diff --git a/asm/macros/field_effect_script.inc b/include/macros/field_effect_script.inc
index d5895b0ef..d5895b0ef 100644
--- a/asm/macros/field_effect_script.inc
+++ b/include/macros/field_effect_script.inc
diff --git a/asm/macros/function.inc b/include/macros/function.inc
index 67fb373a8..67fb373a8 100644
--- a/asm/macros/function.inc
+++ b/include/macros/function.inc
diff --git a/asm/macros/m4a.inc b/include/macros/m4a.inc
index 6c5abc09b..6c5abc09b 100644
--- a/asm/macros/m4a.inc
+++ b/include/macros/m4a.inc
diff --git a/asm/macros/map.inc b/include/macros/map.inc
index db37d9346..db37d9346 100644
--- a/asm/macros/map.inc
+++ b/include/macros/map.inc
diff --git a/asm/macros/movement.inc b/include/macros/movement.inc
index 674ce7169..674ce7169 100644
--- a/asm/macros/movement.inc
+++ b/include/macros/movement.inc
diff --git a/asm/macros/music_voice.inc b/include/macros/music_voice.inc
index b7a9e7f8d..b7a9e7f8d 100644
--- a/asm/macros/music_voice.inc
+++ b/include/macros/music_voice.inc
diff --git a/asm/macros/pokemon_data.inc b/include/macros/pokemon_data.inc
index b0a5f22e3..b0a5f22e3 100644
--- a/asm/macros/pokemon_data.inc
+++ b/include/macros/pokemon_data.inc
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
new file mode 100644
index 000000000..314a856fa
--- /dev/null
+++ b/include/scanline_effect.h
@@ -0,0 +1,48 @@
+#ifndef GUARD_SCANLINE_EFFECT_H
+#define GUARD_SCANLINE_EFFECT_H
+
+// DMA control value to ransfer a single 16-bit value at HBlank
+#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
+
+#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS)
+
+struct ScanlineEffectParams
+{
+ volatile void *dmaDest;
+ u32 dmaControl;
+ u8 initState;
+ u8 unused9;
+};
+
+struct ScanlineEffect
+{
+ void *dmaSrcBuffers[2];
+ volatile void *dmaDest;
+ u32 dmaControl;
+ void (*setFirstScanlineReg)(void);
+ u8 srcBuffer;
+ u8 state;
+ u8 unused16;
+ u8 unused17;
+ u8 waveTaskId;
+ u8 filler19[0x7];
+};
+
+extern struct ScanlineEffect gScanlineEffect;
+
+extern u16 gScanlineEffectRegBuffers[][0x3C0];
+
+void ScanlineEffect_Stop(void);
+void ScanlineEffect_Clear(void);
+void ScanlineEffect_SetParams(struct ScanlineEffectParams);
+void ScanlineEffect_InitHBlankDmaTransfer(void);
+u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7);
+
+#endif // GUARD_SCANLINE_EFFECT_H
diff --git a/include/unknown_task.h b/include/unknown_task.h
deleted file mode 100644
index 011e5f5b5..000000000
--- a/include/unknown_task.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef GUARD_UNKNOWN_TASK_H
-#define GUARD_UNKNOWN_TASK_H
-
-struct UnknownTaskStruct
-{
- volatile void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
-
-struct UnknownTaskStruct2
-{
- void *src[2];
- volatile void *dest;
- u32 unkC;
- void (*unk10)(void);
- u8 srcBank;
- u8 unk15;
- u8 unk16;
- u8 unk17;
- u8 taskId;
- u8 filler19[0x7];
-};
-
-extern struct UnknownTaskStruct2 gUnknown_03004DC0;
-
-extern u16 gUnknown_03004DE0[][0x3C0];
-
-void remove_some_task(void);
-void remove_some_task(void);
-void dp12_8087EA4(void);
-void dp12_8087EA4(void);
-//void sub_80895F8(u32 i, u32 i1, u32 i2);
-//void sub_80895F8();
-void sub_80895F8(struct UnknownTaskStruct unk);
-void sub_8089668(void);
-void sub_8089668();
-//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
-u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
-
-#endif // GUARD_UNKNOWN_TASK_H
diff --git a/ld_script.txt b/ld_script.txt
index 6ae35f8df..54aca5b2b 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -37,7 +37,7 @@ SECTIONS {
.text :
ALIGN(4)
{
- asm/crt0.o(.text);
+ src/crt0.o(.text);
src/engine/main.o(.text);
src/engine/sprite.o(.text);
src/engine/text.o(.text);
@@ -120,7 +120,7 @@ SECTIONS {
src/field/trainer_see.o(.text);
src/field/wild_encounter.o(.text);
src/field/field_effect.o(.text);
- src/unknown_task.o(.text);
+ src/scanline_effect.o(.text);
src/pokemon/pokemon_menu.o(.text);
src/engine/option_menu.o(.text);
src/pokemon/pokedex.o(.text);
@@ -283,20 +283,21 @@ SECTIONS {
src/battle/anim/fire_2.o(.text);
src/battle/anim/heated_rock.o(.text);
src/battle/anim/wisp_orb.o(.text);
- asm/wisp_fire.o(.text);
+ src/battle/anim/wisp_fire.o(.text);
src/battle/anim/thunder.o(.text);
src/battle/anim/beta_beat_up.o(.text);
src/battle/anim/shock.o(.text);
asm/current.o(.text);
asm/ice.o(.text);
asm/fight.o(.text);
- asm/poison.o(.text);
+ src/battle/anim/poison.o(.text);
asm/flying.o(.text);
asm/psychic.o(.text);
- asm/bug.o(.text);
+ src/battle/anim/bug.o(.text);
asm/rock.o(.text);
asm/ghost.o(.text);
- asm/dragon.o(.text);
+ src/battle/anim/dragon.o(.text);
+ src/battle/anim/dark.o(.text);
asm/dark.o(.text);
asm/ground.o(.text);
asm/normal.o(.text);
@@ -407,8 +408,8 @@ SECTIONS {
lib_text :
ALIGN(4)
{
- asm/libgcnmultiboot.o(.text);
- asm/m4a_1.o(.text);
+ src/libs/libgcnmultiboot.o(.text);
+ src/libs/m4a_1.o(.text);
src/libs/m4a_2.o(.text);
asm/m4a_3.o(.text);
src/libs/m4a_4.o(.text);
@@ -416,7 +417,7 @@ SECTIONS {
src/libs/agb_flash_1m.o(.text);
src/libs/agb_flash_mx.o(.text);
src/libs/siirtc.o(.text);
- asm/libagbsyscall.o(.text);
+ src/libs/libagbsyscall.o(.text);
tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text);
tools/agbcc/lib/libgcc.a:_divsi3.o(.text);
tools/agbcc/lib/libgcc.a:_dvmd_tls.o(.text);
diff --git a/misc.mk b/misc.mk
index 1d6cb09b0..40234c81b 100644
--- a/misc.mk
+++ b/misc.mk
@@ -1,143 +1,149 @@
-MENUGFXDIR := graphics/interface
-TRADEGFXDIR := graphics/trade
-INTROGFXDIR := graphics/intro
-PSSGFXDIR := graphics/pokemon_storage
-MISCGFXDIR := graphics/misc
-PKNAVGFXDIR := graphics/pokenav
-UNKNOWNGFXDIR := graphics/unknown
-UNUSEDGFXDIR := graphics/unused
-REELGFXDIR := graphics/slot_machine
-ROULGFXDIR := graphics/roulette
-BTLANMSPRGFXDIR := graphics/battle_anims/sprites
-PICFRAMEGFXDIR := graphics/picture_frame
-CONTESTGFXDIR := graphics/contest
-MASKSGFXDIR := graphics/battle_anims/masks
-BATTRANSGFXDIR := graphics/battle_transitions
-TYPESGFXDIR := graphics/types
-TITLEGFXDIR := graphics/title_screen
+#### Pokemon Storage System ####
-types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
-contest_types := cool beauty cute smart tough
-
-$(MENUGFXDIR)/menu.gbapal: $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal
- @cat $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal >$@
-
-$(INTROGFXDIR)/intro.4bpp: $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp
- @cat $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp >$@
-
-$(INTROGFXDIR)/introgfx.4bpp: $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp
- @cat $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp >$@
+PSSGFXDIR := graphics/pokemon_storage
-$(PKNAVGFXDIR)/region_map.8bpp: $(PKNAVGFXDIR)/region_map.png
- $(GFX) $< $@ -num_tiles 233
+$(PSSGFXDIR)/header.4bpp: GFX_OPTS := -num_tiles 47
-$(PSSGFXDIR)/forest_frame.4bpp: $(PSSGFXDIR)/forest_frame.png
- $(GFX) $< $@ -num_tiles 49
+$(PSSGFXDIR)/misc1.4bpp: GFX_OPTS := -num_tiles 91
+$(PSSGFXDIR)/forest_frame.4bpp: GFX_OPTS := -num_tiles 49
$(PSSGFXDIR)/forest.4bpp: $(PSSGFXDIR)/forest_frame.4bpp $(PSSGFXDIR)/forest_bg.4bpp
@cat $(PSSGFXDIR)/forest_frame.4bpp $(PSSGFXDIR)/forest_bg.4bpp >$@
-$(PSSGFXDIR)/city_frame.4bpp: $(PSSGFXDIR)/city_frame.png
- $(GFX) $< $@ -num_tiles 37
-
+$(PSSGFXDIR)/city_frame.4bpp: GFX_OPTS := -num_tiles 37
$(PSSGFXDIR)/city.4bpp: $(PSSGFXDIR)/city_frame.4bpp $(PSSGFXDIR)/city_bg.4bpp
@cat $(PSSGFXDIR)/city_frame.4bpp $(PSSGFXDIR)/city_bg.4bpp >$@
-$(PSSGFXDIR)/desert_frame.4bpp: $(PSSGFXDIR)/desert_frame.png
- $(GFX) $< $@ -num_tiles 48
-
+$(PSSGFXDIR)/desert_frame.4bpp: GFX_OPTS := -num_tiles 48
$(PSSGFXDIR)/desert.4bpp: $(PSSGFXDIR)/desert_frame.4bpp $(PSSGFXDIR)/desert_bg.4bpp
@cat $(PSSGFXDIR)/desert_frame.4bpp $(PSSGFXDIR)/desert_bg.4bpp >$@
-$(PSSGFXDIR)/savanna_frame.4bpp: $(PSSGFXDIR)/savanna_frame.png
- $(GFX) $< $@ -num_tiles 40
-
+$(PSSGFXDIR)/savanna_frame.4bpp: GFX_OPTS := -num_tiles 40
$(PSSGFXDIR)/savanna.4bpp: $(PSSGFXDIR)/savanna_frame.4bpp $(PSSGFXDIR)/savanna_bg.4bpp
@cat $(PSSGFXDIR)/savanna_frame.4bpp $(PSSGFXDIR)/savanna_bg.4bpp >$@
-$(PSSGFXDIR)/crag_frame.4bpp: $(PSSGFXDIR)/crag_frame.png
- $(GFX) $< $@ -num_tiles 46
-
+$(PSSGFXDIR)/crag_frame.4bpp: GFX_OPTS := -num_tiles 46
$(PSSGFXDIR)/crag.4bpp: $(PSSGFXDIR)/crag_frame.4bpp $(PSSGFXDIR)/crag_bg.4bpp
@cat $(PSSGFXDIR)/crag_frame.4bpp $(PSSGFXDIR)/crag_bg.4bpp >$@
-$(PSSGFXDIR)/volcano_frame.4bpp: $(PSSGFXDIR)/volcano_frame.png
- $(GFX) $< $@ -num_tiles 49
-
+$(PSSGFXDIR)/volcano_frame.4bpp: GFX_OPTS := -num_tiles 49
$(PSSGFXDIR)/volcano.4bpp: $(PSSGFXDIR)/volcano_frame.4bpp $(PSSGFXDIR)/volcano_bg.4bpp
@cat $(PSSGFXDIR)/volcano_frame.4bpp $(PSSGFXDIR)/volcano_bg.4bpp >$@
-$(PSSGFXDIR)/snow_frame.4bpp: $(PSSGFXDIR)/snow_frame.png
- $(GFX) $< $@ -num_tiles 46
-
+$(PSSGFXDIR)/snow_frame.4bpp: GFX_OPTS := -num_tiles 46
$(PSSGFXDIR)/snow.4bpp: $(PSSGFXDIR)/snow_frame.4bpp $(PSSGFXDIR)/snow_bg.4bpp
@cat $(PSSGFXDIR)/snow_frame.4bpp $(PSSGFXDIR)/snow_bg.4bpp >$@
-$(PSSGFXDIR)/cave_frame.4bpp: $(PSSGFXDIR)/cave_frame.png
- $(GFX) $< $@ -num_tiles 57
-
+$(PSSGFXDIR)/cave_frame.4bpp: GFX_OPTS := -num_tiles 57
$(PSSGFXDIR)/cave.4bpp: $(PSSGFXDIR)/cave_frame.4bpp $(PSSGFXDIR)/cave_bg.4bpp
@cat $(PSSGFXDIR)/cave_frame.4bpp $(PSSGFXDIR)/cave_bg.4bpp >$@
-$(PSSGFXDIR)/beach_frame.4bpp: $(PSSGFXDIR)/beach_frame.png
- $(GFX) $< $@ -num_tiles 48
-
+$(PSSGFXDIR)/beach_frame.4bpp: GFX_OPTS := -num_tiles 48
$(PSSGFXDIR)/beach.4bpp: $(PSSGFXDIR)/beach_frame.4bpp $(PSSGFXDIR)/beach_bg.4bpp
@cat $(PSSGFXDIR)/beach_frame.4bpp $(PSSGFXDIR)/beach_bg.4bpp >$@
-$(PSSGFXDIR)/seafloor_frame.4bpp: $(PSSGFXDIR)/seafloor_frame.png
- $(GFX) $< $@ -num_tiles 45
-
+$(PSSGFXDIR)/seafloor_frame.4bpp: GFX_OPTS := -num_tiles 45
$(PSSGFXDIR)/seafloor.4bpp: $(PSSGFXDIR)/seafloor_frame.4bpp $(PSSGFXDIR)/seafloor_bg.4bpp
@cat $(PSSGFXDIR)/seafloor_frame.4bpp $(PSSGFXDIR)/seafloor_bg.4bpp >$@
-$(PSSGFXDIR)/river_frame.4bpp: $(PSSGFXDIR)/river_frame.png
- $(GFX) $< $@ -num_tiles 57
-
+$(PSSGFXDIR)/river_frame.4bpp: GFX_OPTS := -num_tiles 57
$(PSSGFXDIR)/river.4bpp: $(PSSGFXDIR)/river_frame.4bpp $(PSSGFXDIR)/river_bg.4bpp
@cat $(PSSGFXDIR)/river_frame.4bpp $(PSSGFXDIR)/river_bg.4bpp >$@
-$(PSSGFXDIR)/sky_frame.4bpp: $(PSSGFXDIR)/sky_frame.png
- $(GFX) $< $@ -num_tiles 45
-
+$(PSSGFXDIR)/sky_frame.4bpp: GFX_OPTS := -num_tiles 45
$(PSSGFXDIR)/sky.4bpp: $(PSSGFXDIR)/sky_frame.4bpp $(PSSGFXDIR)/sky_bg.4bpp
@cat $(PSSGFXDIR)/sky_frame.4bpp $(PSSGFXDIR)/sky_bg.4bpp >$@
-$(PSSGFXDIR)/polkadot_frame.4bpp: $(PSSGFXDIR)/polkadot_frame.png
- $(GFX) $< $@ -num_tiles 34
-
+$(PSSGFXDIR)/polkadot_frame.4bpp: GFX_OPTS := -num_tiles 34
$(PSSGFXDIR)/polkadot.4bpp: $(PSSGFXDIR)/polkadot_frame.4bpp $(PSSGFXDIR)/polkadot_bg.4bpp
@cat $(PSSGFXDIR)/polkadot_frame.4bpp $(PSSGFXDIR)/polkadot_bg.4bpp >$@
-$(PSSGFXDIR)/pokecenter_bg.4bpp: $(PSSGFXDIR)/pokecenter_bg.png
- $(GFX) $< $@ -num_tiles 38
-
+$(PSSGFXDIR)/pokecenter_bg.4bpp: GFX_OPTS := -num_tiles 38
$(PSSGFXDIR)/pokecenter.4bpp: $(PSSGFXDIR)/pokecenter_frame.4bpp $(PSSGFXDIR)/pokecenter_bg.4bpp
@cat $(PSSGFXDIR)/pokecenter_frame.4bpp $(PSSGFXDIR)/pokecenter_bg.4bpp >$@
-$(PSSGFXDIR)/machine_frame.4bpp: $(PSSGFXDIR)/machine_frame.png
- $(GFX) $< $@ -num_tiles 46
-
+$(PSSGFXDIR)/machine_frame.4bpp: GFX_OPTS := -num_tiles 46
$(PSSGFXDIR)/machine.4bpp: $(PSSGFXDIR)/machine_frame.4bpp $(PSSGFXDIR)/machine_bg.4bpp
@cat $(PSSGFXDIR)/machine_frame.4bpp $(PSSGFXDIR)/machine_bg.4bpp >$@
-$(PSSGFXDIR)/plain_frame.4bpp: $(PSSGFXDIR)/plain_frame.png
- $(GFX) $< $@ -num_tiles 18
-
+$(PSSGFXDIR)/plain_frame.4bpp: GFX_OPTS := -num_tiles 18
$(PSSGFXDIR)/plain.4bpp: $(PSSGFXDIR)/plain_frame.4bpp $(PSSGFXDIR)/plain_bg.4bpp
@cat $(PSSGFXDIR)/plain_frame.4bpp $(PSSGFXDIR)/plain_bg.4bpp >$@
-$(PKNAVGFXDIR)/outline.4bpp: $(PKNAVGFXDIR)/outline.png
- $(GFX) $< $@ -num_tiles 43
-$(REELGFXDIR)/reel_time.4bpp: $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp
- @cat $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp >$@
+#### Intro ####
-$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp
- @cat $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp >$@
+INTROGFXDIR := graphics/intro
-$(MISCGFXDIR)/clock_misc.4bpp: $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp
- @cat $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp >$@
+$(INTROGFXDIR)/intro.4bpp: $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp
+ @cat $(INTROGFXDIR)/intro1_waterdrops.4bpp $(INTROGFXDIR)/intro1_gamefreak.4bpp >$@
+
+$(INTROGFXDIR)/introgfx.4bpp: $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp
+ @cat $(INTROGFXDIR)/intro1_bg.4bpp $(INTROGFXDIR)/intro1_leaves.4bpp >$@
+
+$(INTROGFXDIR)/intro3_misc.4bpp: $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp
+ @cat $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp >$@
+
+$(INTROGFXDIR)/copyright.4bpp: GFX_OPTS := -num_tiles 43
+
+
+#### Title Screen ####
+
+TITLEGFXDIR := graphics/title_screen
+
+$(TITLEGFXDIR)/press_start.4bpp: GFX_OPTS := -num_tiles 41
+
+
+#### Interface ####
+
+MENUGFXDIR := graphics/interface
+
+$(MENUGFXDIR)/menu.gbapal: $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal
+ @cat $(MENUGFXDIR)/menu_0.gbapal $(MENUGFXDIR)/menu_1.gbapal >$@
+
+$(MENUGFXDIR)/wordgroup_frame.4bpp: GFX_OPTS := -num_tiles 65
+
+$(MENUGFXDIR)/party_menu_misc.4bpp: GFX_OPTS := -num_tiles 116
+
+$(MENUGFXDIR)/status_screen.4bpp: GFX_OPTS := -num_tiles 217
+
+$(MENUGFXDIR)/hp_numbers.4bpp: $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp
+ @cat $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp >$@
+
+
+#### PokeNav ####
+
+PKNAVGFXDIR := graphics/pokenav
+
+$(PKNAVGFXDIR)/region_map.8bpp: GFX_OPTS := -num_tiles 233
+
+$(PKNAVGFXDIR)/outline.4bpp: GFX_OPTS := -num_tiles 43
+
+$(PKNAVGFXDIR)/menu_options.4bpp: $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp
+ @cat $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp >$@
+
+$(PKNAVGFXDIR)/condition_menu_misc.4bpp: GFX_OPTS := -num_tiles 41
+
+$(PKNAVGFXDIR)/condition_search.4bpp: $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp
+ @cat $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp >$@
+
+
+#### Trade ####
+
+TRADEGFXDIR := graphics/trade
+
+$(TRADEGFXDIR)/gba_affine.8bpp: GFX_OPTS := -num_tiles 129
+
+$(TRADEGFXDIR)/menu.4bpp: GFX_OPTS := -num_tiles 148
+
+
+#### Casino ####
+
+REELGFXDIR := graphics/slot_machine
+ROULGFXDIR := graphics/roulette
+
+$(REELGFXDIR)/reel_time.4bpp: $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp
+ @cat $(REELGFXDIR)/reel_pikachu.4bpp $(REELGFXDIR)/reel_machine.4bpp >$@
$(ROULGFXDIR)/roulette_tilt.4bpp: $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tailow.4bpp
@cat $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tailow.4bpp >$@
@@ -145,14 +151,11 @@ $(ROULGFXDIR)/roulette_tilt.4bpp: $(ROULGFXDIR)/shroomish.4bpp $(ROULGFXDIR)/tai
$(ROULGFXDIR)/poke_icons2.4bpp: $(ROULGFXDIR)/wynaut.4bpp $(ROULGFXDIR)/azurill.4bpp $(ROULGFXDIR)/skitty.4bpp $(ROULGFXDIR)/makuhita.4bpp
@cat $(ROULGFXDIR)/wynaut.4bpp $(ROULGFXDIR)/azurill.4bpp $(ROULGFXDIR)/skitty.4bpp $(ROULGFXDIR)/makuhita.4bpp >$@
-$(INTROGFXDIR)/intro3_misc.4bpp: $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp
- @cat $(INTROGFXDIR)/intro3_star.4bpp $(INTROGFXDIR)/intro3_attackgfx.4bpp $(INTROGFXDIR)/intro3_explosion.4bpp >$@
-$(TRADEGFXDIR)/gba_affine.8bpp: $(TRADEGFXDIR)/gba_affine.png
- $(GFX) $< $@ -num_tiles 129
+#### Battle Animations ####
-$(TRADEGFXDIR)/menu.4bpp: $(TRADEGFXDIR)/menu.png
- $(GFX) $< $@ -num_tiles 148
+BTLANMSPRGFXDIR := graphics/battle_anims/sprites
+MASKSGFXDIR := graphics/battle_anims/masks
$(BTLANMSPRGFXDIR)/001.4bpp: $(BTLANMSPRGFXDIR)/001_0.4bpp $(BTLANMSPRGFXDIR)/001_1.4bpp
@cat $(BTLANMSPRGFXDIR)/001_0.4bpp $(BTLANMSPRGFXDIR)/001_1.4bpp >$@
@@ -169,47 +172,36 @@ $(BTLANMSPRGFXDIR)/141.4bpp: $(BTLANMSPRGFXDIR)/141_0.4bpp $(BTLANMSPRGFXDIR)/14
$(BTLANMSPRGFXDIR)/159.4bpp: $(BTLANMSPRGFXDIR)/159_0.4bpp $(BTLANMSPRGFXDIR)/159_1.4bpp
@cat $(BTLANMSPRGFXDIR)/159_0.4bpp $(BTLANMSPRGFXDIR)/159_1.4bpp >$@
-$(PICFRAMEGFXDIR)/frame5.4bpp: $(PICFRAMEGFXDIR)/frame5.png
- $(GFX) $< $@ -num_tiles 86
+$(MASKSGFXDIR)/unknown_D2EDFC.4bpp: GFX_OPTS := -num_tiles 14
-$(CONTESTGFXDIR)/nextturn.4bpp: $(CONTESTGFXDIR)/nextturn.png
- $(GFX) $< $@ -num_tiles 8
-$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal
- @cat $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal >$@
+#### Battle Transition
-$(UNUSEDGFXDIR)/obi_palpak3.gbapal: $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal
- @cat $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal >$@
+BATTRANSGFXDIR := graphics/battle_transitions
-$(UNUSEDGFXDIR)/obi1.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp
- @cat $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp >$@
+$(BATTRANSGFXDIR)/vs_frame.4bpp: GFX_OPTS := -num_tiles 16
-$(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp
- @cat $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp >$@
-$(MENUGFXDIR)/hp_numbers.4bpp: $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp
- @cat $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp >$@
+#### Contest ####
-$(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin
- @cat $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin >$@
+CONTESTGFXDIR := graphics/contest
-$(UNUSEDGFXDIR)/color_frames.4bpp: $(UNUSEDGFXDIR)/color_frames.png
- $(GFX) $< $@ -num_tiles 353
+$(CONTESTGFXDIR)/nextturn.4bpp: GFX_OPTS := -num_tiles 8
-$(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp
- @cat $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp >$@
-$(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp
- @cat $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp >$@
+#### Picture Frame ####
-$(MASKSGFXDIR)/unknown_D2EDFC.4bpp: $(MASKSGFXDIR)/unknown_D2EDFC.png
- $(GFX) $< $@ -num_tiles 14
+PICFRAMEGFXDIR := graphics/picture_frame
+
+$(PICFRAMEGFXDIR)/frame5.4bpp: GFX_OPTS := -num_tiles 86
-$(BATTRANSGFXDIR)/vs_frame.4bpp: $(BATTRANSGFXDIR)/vs_frame.png
- $(GFX) $< $@ -num_tiles 16
-$(MENUGFXDIR)/party_menu_misc.4bpp: $(MENUGFXDIR)/party_menu_misc.png
- $(GFX) $< $@ -num_tiles 116
+#### Move Types ####
+
+TYPESGFXDIR := graphics/types
+
+types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
+contest_types := cool beauty cute smart tough
$(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp)
@cat $^ >$@
@@ -217,35 +209,45 @@ $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types
$(TYPESGFXDIR)/move_types.gbapal: $(TYPESGFXDIR)/move_types_1.gbapal $(TYPESGFXDIR)/move_types_2.gbapal $(TYPESGFXDIR)/move_types_3.gbapal
@cat $(TYPESGFXDIR)/move_types_1.gbapal $(TYPESGFXDIR)/move_types_2.gbapal $(TYPESGFXDIR)/move_types_3.gbapal >$@
-$(MENUGFXDIR)/status_screen.4bpp: $(MENUGFXDIR)/status_screen.png
- $(GFX) $< $@ -num_tiles 217
-$(PKNAVGFXDIR)/menu_options.4bpp: $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp
- @cat $(PKNAVGFXDIR)/menu_hoennmap.4bpp $(PKNAVGFXDIR)/menu_condition.4bpp $(PKNAVGFXDIR)/menu_eyes.4bpp $(PKNAVGFXDIR)/menu_ribbons.4bpp $(PKNAVGFXDIR)/menu_off.4bpp >$@
+#### Miscellaneous ####
-$(PKNAVGFXDIR)/condition_menu_misc.4bpp: $(PKNAVGFXDIR)/condition_menu_misc.png
- $(GFX) $< $@ -num_tiles 41
+MISCGFXDIR := graphics/misc
-$(PKNAVGFXDIR)/condition_search.4bpp: $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp
- @cat $(PKNAVGFXDIR)/condition_search_cool.4bpp $(PKNAVGFXDIR)/condition_search_beauty.4bpp $(PKNAVGFXDIR)/condition_search_cute.4bpp $(PKNAVGFXDIR)/condition_search_smart.4bpp $(PKNAVGFXDIR)/condition_search_tough.4bpp $(PKNAVGFXDIR)/condition_search_cancel.4bpp >$@
+$(MISCGFXDIR)/hof.4bpp: GFX_OPTS := -num_tiles 37
-$(PSSGFXDIR)/header.4bpp: $(PSSGFXDIR)/header.png
- $(GFX) $< $@ -num_tiles 47
+$(MISCGFXDIR)/end_copyright.4bpp: GFX_OPTS := -num_tiles 90
-$(PSSGFXDIR)/misc1.4bpp: $(PSSGFXDIR)/misc1.png
- $(GFX) $< $@ -num_tiles 91
+$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp
+ @cat $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp >$@
-$(MISCGFXDIR)/hof.4bpp: $(MISCGFXDIR)/hof.png
- $(GFX) $< $@ -num_tiles 37
+$(MISCGFXDIR)/clock_misc.4bpp: $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp
+ @cat $(MISCGFXDIR)/clock_hands.4bpp $(MISCGFXDIR)/clock_ampm.4bpp >$@
-$(MENUGFXDIR)/wordgroup_frame.4bpp: $(MENUGFXDIR)/wordgroup_frame.png
- $(GFX) $< $@ -num_tiles 65
-$(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png
- $(GFX) $< $@ -num_tiles 43
+#### Unused ####
-$(TITLEGFXDIR)/press_start.4bpp: $(TITLEGFXDIR)/press_start.png
- $(GFX) $< $@ -num_tiles 41
+UNUSEDGFXDIR := graphics/unused
-$(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png
- $(GFX) $< $@ -num_tiles 90
+$(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin
+ @cat $(UNUSEDGFXDIR)/red_frame.bin $(UNUSEDGFXDIR)/yellow_frame.bin $(UNUSEDGFXDIR)/green_frame.bin $(UNUSEDGFXDIR)/blank_frame.bin >$@
+
+$(UNUSEDGFXDIR)/color_frames.4bpp: GFX_OPTS := -num_tiles 353
+
+$(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp
+ @cat $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp $(UNUSEDGFXDIR)/old_contest_floor.4bpp $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp $(UNUSEDGFXDIR)/old_contest_symbols.4bpp $(UNUSEDGFXDIR)/old_contest_meter.4bpp $(UNUSEDGFXDIR)/old_contest_classes.4bpp $(UNUSEDGFXDIR)/old_contest_numbers.4bpp >$@
+
+$(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp
+ @cat $(UNUSEDGFXDIR)/old_contest_2_1.4bpp $(UNUSEDGFXDIR)/old_contest_2_2.4bpp >$@
+
+$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal
+ @cat $(UNUSEDGFXDIR)/old_pal1.gbapal $(UNUSEDGFXDIR)/old_pal2.gbapal $(UNUSEDGFXDIR)/old_pal3.gbapal >$@
+
+$(UNUSEDGFXDIR)/obi_palpak3.gbapal: $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal
+ @cat $(UNUSEDGFXDIR)/old_pal5.gbapal $(UNUSEDGFXDIR)/old_pal6.gbapal $(UNUSEDGFXDIR)/old_pal7.gbapal >$@
+
+$(UNUSEDGFXDIR)/obi1.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp
+ @cat $(UNUSEDGFXDIR)/old_bulbasaur.4bpp $(UNUSEDGFXDIR)/old_charizard.4bpp >$@
+
+$(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp
+ @cat $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp >$@
diff --git a/override-de.mk b/override-de.mk
index 02861fc6a..64a139efb 100644
--- a/override-de.mk
+++ b/override-de.mk
@@ -6,15 +6,15 @@ INTROGFXDIR := graphics/intro
MISCGFXDIR := graphics/misc
$(MENUGFXDIR)/wordgroup_frame.4bpp: $(MENUGFXDIR)/wordgroup_frame.png
- $(GFX) $< $@ -num_tiles 76
+ $(GBAGFX) $< $@ -num_tiles 76
$(MENUGFXDIR)/check_berry.4bpp: $(MENUGFXDIR)/check_berry.png
- $(GFX) $< $@ -num_tiles 97
+ $(GBAGFX) $< $@ -num_tiles 97
$(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png
- $(GFX) $< $@ -num_tiles 47
+ $(GBAGFX) $< $@ -num_tiles 47
$(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png
- $(GFX) $< $@ -num_tiles 92
+ $(GBAGFX) $< $@ -num_tiles 92
#
# tilesets.mk
@@ -22,4 +22,4 @@ $(MISCGFXDIR)/end_copyright.4bpp: $(MISCGFXDIR)/end_copyright.png
TILESETDIR := data/tilesets
$(TILESETDIR)/secondary/shop/tiles.4bpp: $(TILESETDIR)/secondary/shop/tiles.png
- $(GFX) $< $@ -num_tiles 503
+ $(GBAGFX) $< $@ -num_tiles 503
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
new file mode 100644
index 000000000..dbc0f75a5
--- /dev/null
+++ b/src/battle/anim/bug.c
@@ -0,0 +1,302 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "contest.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+// #include "util.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+static void sub_80DCA38(struct Sprite *sprite);
+static void sub_80DCAEC(struct Sprite *sprite);
+static void sub_80DCB5C(struct Sprite *sprite);
+static void sub_80DCBB4(struct Sprite *sprite);
+void sub_80DCD78(struct Sprite *sprite);
+
+// used in Move_MEGAHORN
+void sub_80DC824(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in Move_LEECH_LIFE
+void sub_80DC8F4(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ else if (!GetBankSide(gAnimBankTarget))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in 2 moves:
+// Move_STRING_SHOT, Move_SPIDER_WEB
+void sub_80DC9A0(struct Sprite *sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[2] /= 2;
+
+ sub_80787B0(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+
+ if (!gBattleAnimArgs[4])
+ {
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ }
+ else
+ {
+ sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sub_8078BD4(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DCA38;
+}
+
+static void sub_80DCA38(struct Sprite *sprite)
+{
+ if (sub_8078B5C(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
+}
+
+// used in Move_STRING_SHOT
+void sub_80DCA70(struct Sprite *sprite)
+{
+ sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ if (GetBankSide(gAnimBankAttacker))
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ if (!GetBankSide(gAnimBankTarget))
+ sprite->pos1.y += 8;
+
+ sprite->callback = sub_80DCAEC;
+}
+
+static void sub_80DCAEC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// used in Move_SPIDER_WEB
+void sub_80DCB38(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 16;
+
+ sprite->data[0] = 16;
+ sprite->callback = sub_80DCB5C;
+}
+
+static void sub_80DCB5C(struct Sprite *sprite)
+{
+ if (sprite->data[2] < 20)
+ {
+ sprite->data[2]++;
+ }
+ else if (sprite->data[1]++ & 1)
+ {
+ sprite->data[0]--;
+ REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8);
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80DCBB4;
+ }
+ }
+}
+
+static void sub_80DCBB4(struct Sprite *sprite)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+}
+
+// used in 3 moves:
+// Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON
+void sub_80DCBCC(struct Sprite *sprite)
+{
+ s16 lVarX, lVarY;
+ u16 rot;
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ else
+ {
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ }
+
+ if (!IsContest())
+ {
+ if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ {
+ if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1)
+ {
+ s16 temp1, temp2;
+
+ temp1 = gBattleAnimArgs[2];
+ gBattleAnimArgs[2] = -temp1;
+
+ temp2 = gBattleAnimArgs[0];
+ gBattleAnimArgs[0] = -temp2;
+ }
+ }
+ }
+
+ sub_80787B0(sprite, 1);
+
+ lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ rot = sub_80790F0(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot += 0xC000;
+ sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = lVarX;
+ sprite->data[4] = lVarY;
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// used in 2 moves:
+// Move_PIN_MISSILE, Move_ICICLE_SPEAR
+void sub_80DCCFC(struct Sprite *sprite)
+{
+ sub_80787B0(sprite, 1);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80DCD78;
+ sprite->invisible = TRUE;
+}
+
+void sub_80DCD78(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+
+ if (sub_8078718(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ s16 tempData[8];
+ u16 *data = sprite->data;
+ u16 x1 = sprite->pos1.x;
+ s16 x2 = sprite->pos2.x;
+ u16 y1 = sprite->pos1.y;
+ s16 y2 = sprite->pos2.y;
+ int i;
+
+ for (i = 0; i < 8; i++)
+ tempData[i] = data[i];
+
+ x2 += x1;
+ y2 += y1;
+
+ if (!sub_8078718(sprite))
+ {
+ u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2,
+ sprite->pos1.y + sprite->pos2.y - y2);
+ rot += 0xC000;
+ sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
+
+ for (i = 0; i < 8; i++)
+ data[i] = tempData[i];
+ }
+ }
+}
+
+void sub_80DCE40(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18;
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18;
+ }
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80785E4;
+}
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
new file mode 100755
index 000000000..8ceb00298
--- /dev/null
+++ b/src/battle/anim/dark.c
@@ -0,0 +1,138 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "scanline_effect.h"
+
+void sub_80DFE90(struct Sprite *sprite);
+
+void sub_80DFC9C(u8 taskId);
+void sub_80DFD58(u8 taskId);
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gObjectBankIDs[];
+
+// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
+
+void sub_80DFC24(u8 taskId)
+{
+ int bank;
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ bank = gAnimBankAttacker;
+ gTasks[taskId].data[1] = 16;
+ REG_BLDALPHA = 16;
+ if (GetBankIdentity_permutated(bank) == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+ gTasks[taskId].func = sub_80DFC9C;
+}
+
+void sub_80DFC9C(u8 taskId)
+{
+ u8 r2 = gTasks[taskId].data[1] >> 8;
+ u8 r1 = gTasks[taskId].data[1];
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ r2++;
+ r1--;
+ gTasks[taskId].data[1] = (r2 << 8) | r1;
+ REG_BLDALPHA = (r2 << 8) | r1;
+ gTasks[taskId].data[2] = 0;
+ if (r2 == 16)
+ {
+ gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[2]++;
+}
+
+void sub_80DFD24(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = 0x1000;
+ gTasks[taskId].func = sub_80DFD58;
+ REG_BLDALPHA = 0x1000;
+}
+
+void sub_80DFD58(u8 taskId)
+{
+ u8 r1 = gTasks[taskId].data[1] >> 8;
+ u8 r5 = gTasks[taskId].data[1];
+ if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0])
+ {
+ r1--;
+ r5++;
+ gTasks[taskId].data[1] = (r1 << 8) | r5;
+ REG_BLDALPHA = (r1 << 8) | r5;
+ gTasks[taskId].data[2] = 0;
+ if (r1 == 0)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ gTasks[taskId].data[2]++;
+}
+
+// unlike the above is only used in Feint Attack
+
+void sub_80DFDC0(u8 taskId)
+{
+ REG_BLDALPHA = 0x1000;
+ if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+ DestroyAnimVisualTask(taskId);
+}
+
+// unused sprite template's callback
+
+void sub_80DFE14(struct Sprite *sprite)
+{
+ sprite->data[1] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->data[3] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[0] = 0x7E;
+ sub_8078A5C(sprite);
+ sprite->data[3] = -sprite->data[1];
+ sprite->data[4] = -sprite->data[2];
+ sprite->data[6] = 0xFFD8;
+ sprite->callback = sub_80DFE90;
+ sub_80DFE90(sprite);
+}
+
+void sub_80DFE90(struct Sprite *sprite)
+{
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ if (sprite->data[7] == 0)
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->data[0]--;
+ }
+ sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
+ sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
+ if (sprite->data[5] > 0x7F)
+ {
+ sprite->data[5] = 0;
+ sprite->data[6] += 20;
+ sprite->data[7]++;
+ }
+ if (--sprite->data[0] == 0)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
new file mode 100755
index 000000000..bf39e01c0
--- /dev/null
+++ b/src/battle/anim/dragon.c
@@ -0,0 +1,275 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+#include "scanline_effect.h"
+
+void sub_80DF81C(struct Sprite *sprite);
+void sub_80DFBD8(struct Sprite *sprite);
+
+void sub_80DF9F4(u8 taskId);
+
+void sub_80DFAB0(struct Task *task);
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gBankAttacker;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG2_X;
+extern u16 gUnknown_03000730[];
+extern u8 gObjectBankIDs[];
+
+// Outrage
+
+void sub_80DF5A0(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+ }
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->invisible = 1;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078504;
+}
+
+// part of Dragon Breath
+
+void sub_80DF63C(struct Sprite *sprite)
+{
+ sub_8078650(sprite);
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ if (GetBankSide(gAnimBankAttacker))
+ {
+ sprite->pos1.x -= gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] -= gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ StartSpriteAnim(sprite, 1);
+ }
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
+
+// Dragon Rage
+
+void sub_80DF6F0(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ }
+ sub_807867C(sprite, gBattleAnimArgs[1]);
+ sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
+
+// Dragon Breath init
+
+void sub_80DF760(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker))
+ StartSpriteAffineAnim(sprite, 1);
+ sub_80DF63C(sprite);
+}
+
+//next 2 tasks might be Dragon Dance orbs?
+
+void sub_80DF78C(struct Sprite *sprite)
+{
+ u16 r5;
+ u16 r0;
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ sprite->data[6] = gBattleAnimArgs[0];
+ r5 = sub_807A100(gBankAttacker, 0);
+ r0 = sub_807A100(gBankAttacker, 1);
+ if (r5 > r0)
+ sprite->data[7] = r5 / 2;
+ else
+ sprite->data[7] = r0 / 2;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->callback = sub_80DF81C;
+}
+
+void sub_80DF81C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 0x3C)
+ {
+ sprite->data[3] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
+ sprite->data[7] = 0x96;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 20)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+// Dragon Dance scanline eff
+
+void sub_80DF924(u8 taskId)
+{
+ struct ScanlineEffectParams sp;
+ struct Task *task = &gTasks[taskId];
+ u16 i;
+ u8 r1;
+ if (GetBankIdentity_permutated(gAnimBankAttacker) == 1)
+ {
+ sp.dmaDest = &REG_BG1HOFS;
+ task->data[2] = gBattle_BG1_X;
+ }
+ else
+ {
+ sp.dmaDest = &REG_BG2HOFS;
+ task->data[2] = gBattle_BG2_X;
+ }
+ sp.dmaControl = 0xA2600001;
+ sp.initState = 1;
+ sp.unused9 = 0;
+ r1 = sub_8077FC0(gAnimBankAttacker);
+ task->data[3] = r1 - 32;
+ task->data[4] = r1 + 32;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ for(i = task->data[3];i <= task->data[4];i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ }
+ ScanlineEffect_SetParams(sp);
+ task->func = sub_80DF9F4;
+}
+
+void sub_80DF9F4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (++task->data[6] == 3)
+ task->data[0]++;
+ }
+ sub_80DFAB0(task);
+ break;
+ case 1:
+ if (++task->data[1] > 0x3C)
+ task->data[0]++;
+ sub_80DFAB0(task);
+ break;
+ case 2:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (--task->data[6] == 0)
+ task->data[0]++;
+ }
+ sub_80DFAB0(task);
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DFAB0(struct Task *task)
+{
+ u16 r3 = task->data[5];
+ u16 i;
+ for (i = task->data[3]; i <= task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2];
+ r3 = (r3 + 8) & 0xFF;
+ }
+ task->data[5] = (task->data[5] + 9) & 0xFF;
+}
+
+// Overheat
+
+void sub_80DFB28(struct Sprite *sprite)
+{
+ int r6 = (gBattleAnimArgs[2] * 3) / 5;
+ int i;
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[4];
+ sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
+ sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
+ sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
+ sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DFBD8;
+ for (i = 0; i <= 6; i++)
+ gUnknown_03000730[i] = sprite->data[i];
+}
+
+void sub_80DFBD8(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->data[5] += sprite->data[2];
+ sprite->pos2.x = sprite->data[4] / 10;
+ sprite->pos2.y = sprite->data[5] / 10;
+ if (++sprite->data[0] > sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index 3adb62e06..f9e505bf2 100755
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -3,7 +3,7 @@
#include "trig.h"
#include "battle_anim.h"
#include "sound.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
@@ -21,7 +21,8 @@ static void sub_80D0E8C(struct Sprite* sprite);
void sub_80D0C88(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- struct UnknownTaskStruct sp;
+ struct ScanlineEffectParams params;
+
s16 i;
task->data[0] = sub_8077FC0(gAnimBankTarget) + 32;
task->data[1] = 4;
@@ -30,30 +31,31 @@ void sub_80D0C88(u8 taskId)
task->data[4] = 0;
task->data[5] = 0;
task->data[15] = sub_807A100(gAnimBankTarget, 0);
+
if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
{
task->data[6] = gBattle_BG1_X;
- sp.dest = (u16 *)REG_ADDR_BG1HOFS;
+ params.dmaDest = (u16 *)REG_ADDR_BG1HOFS;
}
else
{
task->data[6] = gBattle_BG2_X;
- sp.dest = (u16 *)REG_ADDR_BG2HOFS;
+ params.dmaDest = (u16 *)REG_ADDR_BG2HOFS;
}
for (i = task->data[0] - 0x40; i <= task->data[0];i++)
{
if (i >= 0)
{
- gUnknown_03004DE0[0][i] = task->data[6] + 0xF0;
- gUnknown_03004DE0[1][i] = task->data[6] + 0xF0;
+ gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0;
+ gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0;
}
}
- sp.control = 0xa2600001;
- sp.unk8 = 1;
- sp.unk9 = 0;
- sub_80895F8(sp);
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
task->func = sub_80D0D68;
}
@@ -91,13 +93,13 @@ void sub_80D0D68(u8 taskId)
if (task->data[5] >= 0)
{
- gUnknown_03004DE0[0][task->data[5]] = task->data[6];
- gUnknown_03004DE0[1][task->data[5]] = task->data[6];
+ gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6];
+ gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6];
}
if (++task->data[3] >= task->data[15])
{
- gUnknown_03004DC0.unk15 = 3;
+ gScanlineEffect.unk15 = 3;
DestroyAnimVisualTask(taskId);
}
}
@@ -178,7 +180,7 @@ _080D0DE0:\n\
ldrsh r0, [r3, r1]\n\
cmp r0, 0\n\
blt _080D0E04\n\
- ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\
+ ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\
lsls r0, 1\n\
adds r0, r2\n\
ldrh r1, [r3, 0x14]\n\
@@ -202,7 +204,7 @@ _080D0E04:\n\
ldrsh r1, [r3, r2]\n\
cmp r0, r1\n\
blt _080D0E22\n\
- ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\
+ ldr r1, _080D0E2C @ =gScanlineEffect\n\
movs r0, 0x3\n\
strb r0, [r1, 0x15]\n\
adds r0, r4, 0\n\
@@ -212,8 +214,8 @@ _080D0E22:\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
-_080D0E28: .4byte gUnknown_03004DE0\n\
-_080D0E2C: .4byte gUnknown_03004DC0\n\
+_080D0E28: .4byte gScanlineEffectRegBuffers\n\
+_080D0E2C: .4byte gScanlineEffect\n\
.syntax divided\n");
}
#endif
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
new file mode 100644
index 000000000..f31c441fb
--- /dev/null
+++ b/src/battle/anim/poison.c
@@ -0,0 +1,140 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+void sub_80D9DD4(struct Sprite *sprite);
+void sub_80D9E78(struct Sprite *sprite);
+void sub_80D9EE8(struct Sprite *sprite);
+void sub_80D9FF0(struct Sprite *sprite);
+
+void sub_80D9D70(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ sub_80787B0(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[5] = -30;
+
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80D9DD4;
+}
+
+void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
+{
+ if (sub_8078718(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9DF0(struct Sprite *sprite)
+{
+ s16 l1, l2;
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ sub_80787B0(sprite, 1);
+ sub_807A3FC(gAnimBankTarget, 1, &l1, &l2);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = l1 + gBattleAnimArgs[4];
+ sprite->data[4] = l2 + gBattleAnimArgs[5];
+ sprite->data[5] = -30;
+
+ sub_80786EC(sprite);
+
+ sprite->callback = sub_80D9E78;
+}
+
+void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
+{
+ if (sub_8078718(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9E94(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
+
+ sub_8078A5C(sprite);
+
+ sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
+ sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
+
+ sprite->callback = sub_80D9EE8;
+}
+
+void sub_80D9EE8(struct Sprite *sprite)
+{
+ sub_8078394(sprite);
+
+ sprite->data[1] -= sprite->data[5];
+ sprite->data[2] -= sprite->data[6];
+
+ if (!sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9F14(struct Sprite *sprite)
+{
+ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + sprite->data[0];
+
+ sprite->callback = sub_8078B34;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D9F88(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[2])
+ {
+ sub_8078764(sprite, TRUE);
+ }
+ else
+ {
+ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBankSide(gAnimBankAttacker))
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->callback = sub_80D9FF0;
+}
+
+void sub_80D9FF0(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->data[1] += 0x30;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+} \ No newline at end of file
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
new file mode 100644
index 000000000..348ce6426
--- /dev/null
+++ b/src/battle/anim/wisp_fire.c
@@ -0,0 +1,196 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "main.h"
+#include "rom_8077ABC.h"
+#include "task.h"
+#include "trig.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankTarget;
+extern u8 gAnimBankAttacker;
+
+extern u8 gObjectBankIDs[];
+extern s8 gUnknown_083D9794[16];
+extern s8 gUnknown_083D97A4[16];
+
+void sub_80D5E4C(u8 taskId);
+
+void sub_80D5CC0(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[0] += 1;
+ }
+
+ sprite->data[3] += 0xC0 * 2;
+ sprite->data[4] += 0xA0;
+
+ sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8);
+ sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8);
+
+ sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
+
+ if (gMain.inBattle)
+ {
+ if (sprite->data[1] < 64 || sprite->data[1] > 195)
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget);
+ else
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1;
+ }
+ else
+ {
+ if (sprite->data[1] < 64 || sprite->data[1] > 195)
+ sprite->subpriority = 0x1D;
+ else
+ sprite->subpriority = 0x1F;
+ }
+
+ if (++sprite->data[2] > 0x14)
+ sprite->invisible ^= 1;
+
+ if (sprite->data[2] == 0x1E)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D5DDC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[12] = !GetBankSide(gAnimBankAttacker) ? 1 : -1;
+ task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1;
+ task->data[14] = GetAnimBankSpriteId(1);
+ task->data[15] = GetAnimBankSpriteId(3);
+
+ task->func = sub_80D5E4C;
+}
+
+void sub_80D5E4C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] += task->data[12] * 2;
+ if (++task->data[1] >= 2)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 16)
+ {
+ task->data[9] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (++task->data[1] >= 5)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 96)
+ {
+ task->data[9] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[10] -= task->data[12] * 2;
+
+ if (++task->data[1] >= 2)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+
+ if (task->data[2] & 1)
+ task->data[11] = 2;
+ else
+ task->data[11] = -2;
+ }
+
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ }
+
+ if (++task->data[9] == 16)
+ {
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
+ {
+ gSprites[task->data[task->data[3] + 14]].pos2.x = 0;
+ }
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80D6080(u8 taskId)
+{
+ struct Struct_sub_8078914 unk;
+ sub_8078914(&unk);
+ BlendPalette(unk.field_8 << 4, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80D60B4(u8 taskId)
+{
+ s8 unk;
+ u8 spriteId;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = gBattleAnimArgs[3];
+ }
+ gTasks[taskId].data[0]++;
+
+ spriteId = gObjectBankIDs[gAnimBankTarget];
+
+ if (!gTasks[taskId].data[4])
+ unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10];
+ else
+ unk = gUnknown_083D97A4[gTasks[taskId].data[0] % 10];
+
+ if (gTasks[taskId].data[3] == 1)
+ gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk;
+ else
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * unk;
+
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
+ {
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+} \ No newline at end of file
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 249b67e0d..990535b4e 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -34,7 +34,7 @@
#include "trainer.h"
#include "trig.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
#include "constants/battle_move_effects.h"
#include "constants/items.h"
@@ -108,9 +108,9 @@ extern u16 gUnknown_02024DE8;
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern struct Window gUnknown_030041D0;
extern u16 gBattle_WIN1H;
extern struct Window gUnknown_03004210;
@@ -219,21 +219,21 @@ void InitBattle(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 80; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
- gUnknown_03004DE0[1][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0xF0;
}
for (i = 80; i < 160; i++)
{
asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
- gUnknown_03004DE0[0][i] = 0xFF10;
- gUnknown_03004DE0[1][i] = 0xFF10;
+ gScanlineEffectRegBuffers[0][i] = 0xFF10;
+ gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
- sub_80895F8(gUnknown_081F9674);
+ //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ ScanlineEffect_SetParams(gUnknown_081F9674);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
gBattle_BG0_X = 0;
@@ -242,8 +242,8 @@ void InitBattle(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
gBattleTerrain = BattleSetup_GetTerrain();
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
@@ -1064,8 +1064,8 @@ void sub_800FCFC(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
REG_WIN0H = gBattle_WIN0H;
REG_WIN0V = gBattle_WIN0V;
REG_WIN1H = gBattle_WIN1H;
@@ -1073,7 +1073,7 @@ void sub_800FCFC(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void nullsub_36(struct Sprite *sprite)
@@ -1197,18 +1197,18 @@ void c2_8011A1C(void)
REG_WINOUT = 0;
gBattle_WIN0H = 0xF0;
gBattle_WIN0V = 0x5051;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 80; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
- gUnknown_03004DE0[1][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0xF0;
}
for (i = 80; i < 160; i++)
{
asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
- gUnknown_03004DE0[0][i] = 0xFF10;
- gUnknown_03004DE0[1][i] = 0xFF10;
+ gScanlineEffectRegBuffers[0][i] = 0xFF10;
+ gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
@@ -1218,8 +1218,8 @@ void c2_8011A1C(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 164329c1b..ae8f94130 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -93,7 +93,7 @@ extern u16 gChosenMove; //last used move in battle
extern u8 gBankInMenu;
extern u8 gActionForBanks[4];
extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one
extern u8 gCurrentTurnActionNumber;
extern u16 gTrappingMoves[];
@@ -17229,7 +17229,7 @@ static void atkF2_displaydexinfo(void)
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
REG_BG3CNT = 0x5a0b;
- gUnknown_030041B0 = 0x100;
+ gBattle_BG3_X = 0x100;
BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0);
gBattleCommunication[0]++;
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 489581132..a5f833b6c 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -67,9 +67,9 @@ extern u8 gUnknown_02024E68[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gAnimMoveTurn;
extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG0_X;
diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c
index 985f43945..f7cdc0694 100644
--- a/src/battle/battle_transition.c
+++ b/src/battle/battle_transition.c
@@ -13,12 +13,10 @@
#include "trainer.h"
#include "field_camera.h"
#include "ewram.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
void sub_807DE10(void);
-void dp12_8087EA4(void);
-
-extern u16 gUnknown_03005560[];
+void ScanlineEffect_Clear(void);
extern const struct OamData gFieldOamData_32x32;
@@ -672,9 +670,9 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task)
u16 savedIME;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
- sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl);
SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl);
@@ -695,7 +693,7 @@ static bool8 Phase2_Transition_Swirl_Func2(struct Task* task)
task->data[1] += 4;
task->data[2] += 8;
- sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
if (!gPaletteFade.active)
{
@@ -711,12 +709,12 @@ static void VBlankCB_Phase2_Transition_Swirl(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Swirl(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1HOFS = var;
REG_BG2HOFS = var;
REG_BG3HOFS = var;
@@ -732,10 +730,10 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
u16 savedIME;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
- memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140);
+ memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140);
SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle);
SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle);
@@ -764,7 +762,7 @@ static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task)
for (i = 0; i < 160; i++, r4 += 4224)
{
u16 var = r4 / 256;
- gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
}
if (!gPaletteFade.active)
@@ -778,12 +776,12 @@ static void VBlankCB_Phase2_Transition_Shuffle(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Shuffle(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1VOFS = var;
REG_BG2VOFS = var;
REG_BG3VOFS = var;
@@ -800,7 +798,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
u16 *dst1, *dst2;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
task->data[1] = 16;
task->data[2] = 0;
@@ -815,7 +813,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = 240;
+ gScanlineEffectRegBuffers[1][i] = 240;
}
SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball);
@@ -844,7 +842,7 @@ static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task)
dst1[i * 32 + j] = *BigPokeballMap | 0xF000;
}
}
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5], 160);
task->tState++;
return TRUE;
@@ -864,7 +862,7 @@ static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
TRANSITION_STRUCT.VBlank_DMA++;
return FALSE;
@@ -884,7 +882,7 @@ static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
TRANSITION_STRUCT.VBlank_DMA++;
return FALSE;
@@ -896,7 +894,7 @@ static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task)
task->data[4] += 8;
task->data[5] -= 256;
- sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+ sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
if (task->data[5] <= 0)
{
@@ -921,7 +919,7 @@ static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task)
if (task->data[1] < 0)
task->data[1] = 0;
}
- sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]);
+ sub_811D764(gScanlineEffectRegBuffers[0], 120, 80, task->data[1]);
if (task->data[1] == 0)
{
DmaStop(0);
@@ -943,7 +941,7 @@ static void Transition_BigPokeball_Vblank(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
@@ -954,13 +952,13 @@ static void Transition_BigPokeball_Vblank(void)
static void VBlankCB0_Phase2_Transition_BigPokeball(void)
{
Transition_BigPokeball_Vblank();
- DmaSet(0, gUnknown_03005560, &REG_BG0HOFS, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BG0HOFS, 0xA2400001);
}
static void VBlankCB1_Phase2_Transition_BigPokeball(void)
{
Transition_BigPokeball_Vblank();
- DmaSet(0, gUnknown_03005560, &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_PokeballsTrail(u8 taskID)
@@ -1078,7 +1076,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 0;
TRANSITION_STRUCT.WINOUT = 63;
@@ -1087,7 +1085,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = 0xF3F4;
+ gScanlineEffectRegBuffers[1][i] = 0xF3F4;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade);
@@ -1104,7 +1102,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task)
sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
TRANSITION_STRUCT.data[4] += 16;
@@ -1132,7 +1130,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1;
if (TRANSITION_STRUCT.data[5] >= 80)
r1 = TRANSITION_STRUCT.data[2], r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
if (var != 0)
break;
var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
@@ -1148,7 +1146,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
{
while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ gScanlineEffectRegBuffers[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
}
}
@@ -1163,7 +1161,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task)
sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1);
do
{
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
TRANSITION_STRUCT.data[4] -= 16;
@@ -1188,10 +1186,10 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
while (1)
{
- r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
+ r1 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
if (TRANSITION_STRUCT.data[5] <= 80)
r2 = 120, r1 = TRANSITION_STRUCT.data[2];
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
r3 = 0;
if (var != 0)
break;
@@ -1208,7 +1206,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
{
while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5])
{
- gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
}
}
@@ -1228,7 +1226,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task)
r2 = 120, r3 = TRANSITION_STRUCT.data[2];
if (TRANSITION_STRUCT.data[2] >= 120)
r2 = 0, r3 = 240;
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
} while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
@@ -1253,12 +1251,12 @@ static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- REG_WIN0H = gUnknown_03004DE0[1][0];
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void Phase2Task_Transition_Ripple(u8 taskID)
@@ -1271,11 +1269,11 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 160; i++)
{
- gUnknown_03005560[i] = TRANSITION_STRUCT.field_16;
+ gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_16;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple);
@@ -1308,7 +1306,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task)
// todo: fix the asm
s16 var = r4 >> 8;
asm("");
- gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
asm("");
}
@@ -1329,12 +1327,12 @@ static void VBlankCB_Phase2_Transition_Ripple(void)
{
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
}
static void HBlankCB_Phase2_Transition_Ripple(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1VOFS = var;
REG_BG2VOFS = var;
REG_BG3VOFS = var;
@@ -1350,7 +1348,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 63;
TRANSITION_STRUCT.WINOUT = 0;
@@ -1359,7 +1357,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 242;
+ gScanlineEffectRegBuffers[1][i] = 242;
}
SetVBlankCallback(VBlankCB_Phase2_Transition_Wave);
@@ -1375,7 +1373,7 @@ static bool8 Phase2_Transition_Wave_Func2(struct Task* task)
bool8 nextFunc;
TRANSITION_STRUCT.VBlank_DMA = 0;
- toStore = gUnknown_03004DE0[0];
+ toStore = gScanlineEffectRegBuffers[0];
r5 = task->data[2];
task->data[2] += 16;
task->data[1] += 8;
@@ -1411,11 +1409,11 @@ static void VBlankCB_Phase2_Transition_Wave(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
#define tMugshotOpponentID data[13]
@@ -1462,7 +1460,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task)
u8 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
Mugshots_CreateOpponentPlayerSprites(task);
task->data[1] = 0;
@@ -1474,7 +1472,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 0xF0F1;
+ gScanlineEffectRegBuffers[1][i] = 0xF0F1;
}
SetVBlankCallback(VBlankCB0_Phase2_Mugshots);
@@ -1519,7 +1517,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- toStore = gUnknown_03004DE0[0];
+ toStore = gScanlineEffectRegBuffers[0];
r5 = task->data[1];
task->data[1] += 0x10;
@@ -1565,7 +1563,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
- for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++)
+ for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++)
{
*toStore = 0xF0;
}
@@ -1608,8 +1606,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
SetVBlankCallback(NULL);
DmaStop(0);
- memset(gUnknown_03004DE0[0], 0, 0x140);
- memset(gUnknown_03004DE0[1], 0, 0x140);
+ memset(gScanlineEffectRegBuffers[0], 0, 0x140);
+ memset(gScanlineEffectRegBuffers[1], 0, 0x140);
REG_WIN0H = 0xF0;
REG_BLDY = 0;
task->tState++;
@@ -1642,15 +1640,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task)
{
s16 index1 = 0x50 - i;
s16 index2 = 0x50 + i;
- if (gUnknown_03004DE0[0][index1] <= 15)
+ if (gScanlineEffectRegBuffers[0][index1] <= 15)
{
r6 = TRUE;
- gUnknown_03004DE0[0][index1]++;
+ gScanlineEffectRegBuffers[0][index1]++;
}
- if (gUnknown_03004DE0[0][index2] <= 15)
+ if (gScanlineEffectRegBuffers[0][index2] <= 15)
{
r6 = TRUE;
- gUnknown_03004DE0[0][index2]++;
+ gScanlineEffectRegBuffers[0][index2]++;
}
}
}
@@ -1678,7 +1676,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task)
TRANSITION_STRUCT.VBlank_DMA = 0;
task->data[3]++;
- memset(gUnknown_03004DE0[0], task->data[3], 0x140);
+ memset(gScanlineEffectRegBuffers[0], task->data[3], 0x140);
if (task->data[3] > 15)
task->tState++;
@@ -1699,12 +1697,12 @@ static void VBlankCB0_Phase2_Mugshots(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_BG0VOFS = TRANSITION_STRUCT.field_1C;
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void VBlankCB1_Phase2_Mugshots(void)
@@ -1712,9 +1710,9 @@ static void VBlankCB1_Phase2_Mugshots(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA != 0)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
- DmaSet(0, gUnknown_03004DE0[1], &REG_BLDY, 0xA2400001);
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_BLDY, 0xA2400001);
}
static void HBlankCB_Phase2_Mugshots(void)
@@ -1846,7 +1844,7 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
task->data[2] = 256;
task->data[3] = 1;
@@ -1856,8 +1854,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14;
- gUnknown_03004DE0[1][160 + i] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_14;
+ gScanlineEffectRegBuffers[1][160 + i] = 0xF0;
}
REG_IE |= INTR_FLAG_HBLANK;
@@ -1886,8 +1884,8 @@ static bool8 Phase2_Transition_Slice_Func2(struct Task* task)
for (i = 0; i < 160; i++)
{
- u16* storeLoc1 = &gUnknown_03004DE0[0][i];
- u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160];
+ u16* storeLoc1 = &gScanlineEffectRegBuffers[0][i];
+ u16* storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160];
if (1 & i)
{
*storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1];
@@ -1923,13 +1921,13 @@ static void VBlankCB_Phase2_Transition_Slice(void)
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
- DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_WIN0H, 0xA2400001);
}
static void HBlankCB_Phase2_Transition_Slice(void)
{
- u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT];
REG_BG1HOFS = var;
REG_BG2HOFS = var;
REG_BG3HOFS = var;
@@ -1945,7 +1943,7 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.BLDCNT = 0xBF;
TRANSITION_STRUCT.BLDY = 0;
@@ -1955,8 +1953,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[1][i] = 0;
- gUnknown_03004DE0[1][i + 160] = 0xF0;
+ gScanlineEffectRegBuffers[1][i] = 0;
+ gScanlineEffectRegBuffers[1][i + 160] = 0xF0;
}
REG_IE |= INTR_FLAG_HBLANK;
@@ -2038,8 +2036,8 @@ static void VBlankCB0_Phase2_Transition_WhiteFade(void)
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.field_6;
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
- DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640);
+ DmaSet(0, &gScanlineEffectRegBuffers[1][160], &REG_WIN0H, 0xA2400001);
}
static void VBlankCB1_Phase2_Transition_WhiteFade(void)
@@ -2055,7 +2053,7 @@ static void VBlankCB1_Phase2_Transition_WhiteFade(void)
static void HBlankCB_Phase2_Transition_WhiteFade(void)
{
- REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT];
}
static void sub_811CFD0(struct Sprite* sprite)
@@ -2069,8 +2067,8 @@ static void sub_811CFD0(struct Sprite* sprite)
else
{
u16 i;
- u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y];
- u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160];
+ u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y];
+ u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160];
for (i = 0; i < 20; i++)
{
ptr1[i] = sprite->data[0] >> 8;
@@ -2160,7 +2158,7 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
u16 i;
sub_811D658();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
TRANSITION_STRUCT.WININ = 0x3F;
TRANSITION_STRUCT.WINOUT = 0;
@@ -2168,10 +2166,10 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
for (i = 0; i < 160; i++)
{
- gUnknown_03004DE0[0][i] = 0xF0;
+ gScanlineEffectRegBuffers[0][i] = 0xF0;
}
- CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0);
+ CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0);
SetVBlankCallback(VBlankCB_Phase2_Transition_Shards);
task->tState++;
@@ -2200,8 +2198,8 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
for (i = 0, nextFunc = FALSE; i < 16; i++)
{
- s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8;
- s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF;
+ s16 r3 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] >> 8;
+ s16 r4 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF;
if (task->data[2] == 0)
{
if (r3 < TRANSITION_STRUCT.data[2])
@@ -2216,7 +2214,7 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
if (r4 <= r3)
r4 = r3;
}
- gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
+ gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
if (nextFunc)
{
task->tState++;
@@ -2263,12 +2261,12 @@ static void VBlankCB_Phase2_Transition_Shards(void)
DmaStop(0);
VBlankCB_BattleTransition();
if (TRANSITION_STRUCT.VBlank_DMA)
- DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320);
REG_WININ = TRANSITION_STRUCT.WININ;
REG_WINOUT = TRANSITION_STRUCT.WINOUT;
REG_WIN0V = TRANSITION_STRUCT.WIN0V;
- REG_WIN0H = gUnknown_03004DE0[1][0];
- DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+ REG_WIN0H = gScanlineEffectRegBuffers[1][0];
+ DmaSet(0, gScanlineEffectRegBuffers[1], &REG_WIN0H, 0xA2400001);
}
static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index 42bb3ba7f..a78cb20df 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -3,7 +3,7 @@
#include "battle_anim.h"
#include "palette.h"
#include "main.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "text.h"
#include "rom_8077ABC.h"
#include "data2.h"
@@ -15,9 +15,9 @@ extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG1_X;
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_BG0_Y;
extern u8 gReservedSpritePaletteCount;
extern u8 gActionSelectionCursor[4];
@@ -77,7 +77,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
switch (gReshowState)
{
case 0:
- dp12_8087EA4();
+ ScanlineEffect_Clear();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
@@ -87,8 +87,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
break;
case 1:
{
diff --git a/src/contest.c b/src/contest.c
index 8985d6490..875fe4502 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -29,7 +29,7 @@
#include "task.h"
#include "text.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
@@ -51,9 +51,9 @@ extern u8 gBanksBySide[];
extern u8 gObjectBankIDs[];
extern u8 gIsLinkContest;
extern u8 gContestPlayerMonIndex;
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern s16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_WIN1H;
extern struct Window gUnknown_03004210;
extern u16 gBattle_WIN0V;
@@ -330,8 +330,8 @@ void ResetContestGpuRegs(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
gBattle_WIN1H = 0;
@@ -412,7 +412,7 @@ void CB2_StartContest(void)
SetVBlankCallback(NULL);
SetUpContestWindow();
ResetContestGpuRegs();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
ResetPaletteFade();
gPaletteFade.bufferTransferDisabled = TRUE;
DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000);
@@ -626,8 +626,8 @@ void ContestVBlankCallback(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
REG_WIN0H = gBattle_WIN0H;
REG_WIN0V = gBattle_WIN0V;
REG_WIN1H = gBattle_WIN1H;
@@ -635,7 +635,7 @@ void ContestVBlankCallback(void)
TransferPlttBuffer();
LoadOam();
ProcessSpriteCopyRequests();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_80ABB70(u8 taskId)
diff --git a/asm/crt0.s b/src/crt0.s
index 049392be9..049392be9 100644
--- a/asm/crt0.s
+++ b/src/crt0.s
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 0585c4e00..1da337b04 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -14,7 +14,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
extern u8 gUnknown_0203856C;
@@ -35,8 +35,8 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gUnknown_030041B0;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
extern struct Window gUnknown_03004210;
extern u8 (*gCallback_03004AE8)(void);
@@ -463,8 +463,8 @@ static void sub_80A9F50(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
}
static void sub_80A9FE4(void)
@@ -511,12 +511,12 @@ static void sub_80AA090(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void sub_80AA10C(void)
@@ -528,7 +528,7 @@ static void sub_80AA10C(void)
gPaletteFade.bufferTransferDisabled = 1;
SetVBlankCallback(0);
sub_80A9F50();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c
index cb0e98b71..4b64846f9 100644
--- a/src/easy_chat_1.c
+++ b/src/easy_chat_1.c
@@ -14,7 +14,7 @@
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern const struct WindowTemplate gWindowTemplate_81E6D54;
extern const struct WindowTemplate gWindowTemplate_81E6DA8;
@@ -43,7 +43,7 @@ const u16 gBerryMasterWifePhrases[][2] =
// const pointer to gEasyChatStruct-> easy_chat might be two separate files.
struct Shared1000 *const gEasyChatStruct = (struct Shared1000 *)(gSharedMem + 0x1000);
-const struct UnknownTaskStruct gUnknown_083DB698 =
+const struct ScanlineEffectParams gUnknown_083DB698 =
{
&REG_BG3VOFS,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -297,10 +297,10 @@ void sub_80E62F8(void)
SetVBlankCallback(0);
ResetPaletteFade();
ResetSpriteData();
- dp12_8087EA4();
- remove_some_task();
+ ScanlineEffect_Clear();
+ ScanlineEffect_Stop();
sub_80EAD08();
- sub_80895F8(gUnknown_083DB698);
+ ScanlineEffect_SetParams(gUnknown_083DB698);
FreeSpriteTileRanges();
FreeAllSpritePalettes();
break;
@@ -655,7 +655,7 @@ void sub_80E6A6C(void)
ProcessSpriteCopyRequests();
sub_80EAC5C();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_80E6A88(void)
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index 66af7fc04..dc8bddd5a 100644
--- a/src/easy_chat_2.c
+++ b/src/easy_chat_2.c
@@ -17,7 +17,7 @@
#include "strings.h"
#include "strings2.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern void sub_8095C8C();
extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16);
@@ -2053,7 +2053,7 @@ void sub_80EAD08(void)
u16 r2;
u16 i;
- r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
r4 += 88;
r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF;
diff --git a/src/engine/main.c b/src/engine/main.c
index 92b81d475..54a443e80 100644
--- a/src/engine/main.c
+++ b/src/engine/main.c
@@ -13,7 +13,7 @@
#include "rtc.h"
#include "siirtc.h"
#include "sound.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern struct SoundInfo gSoundInfo;
extern u32 IntrMain[];
@@ -362,7 +362,7 @@ void DoSoftReset(void)
{
REG_IME = 0;
m4aSoundVSyncOff();
- remove_some_task();
+ ScanlineEffect_Stop();
DmaStop(1);
DmaStop(2);
DmaStop(3);
diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c
index 715570fe0..a0b8b7020 100644
--- a/src/engine/main_menu.c
+++ b/src/engine/main_menu.c
@@ -21,7 +21,7 @@
#include "task.h"
#include "text.h"
#include "title_screen.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
#define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24))
@@ -229,7 +229,7 @@ u32 InitMainMenu(u8 a1)
ResetPaletteFade();
LoadPalette(gMainMenuPalette, 0, 32);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -763,7 +763,7 @@ static void Task_NewGameSpeech1(u8 taskId)
LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800));
LoadPalette(gUnknown_081E764C, 0, 0x40);
LoadPalette(gUnknown_081E796C, 1, 0x10);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
AddBirchSpeechObjects(taskId);
@@ -1368,7 +1368,7 @@ void CB_ContinueNewGameSpeechPart2()
gTasks[taskId].tBGhofs = -60;
- remove_some_task();
+ ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
AddBirchSpeechObjects(taskId);
diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c
index 868830880..1fc78efaa 100644
--- a/src/engine/option_menu.c
+++ b/src/engine/option_menu.c
@@ -3,12 +3,12 @@
#include "main.h"
#include "menu.h"
#include "palette.h"
+#include "scanline_effect.h"
#include "sprite.h"
#include "strings2.h"
#include "task.h"
extern void SetPokemonCryStereo(u32 val);
-extern void remove_some_task(void);
//Task data
enum {
@@ -110,7 +110,7 @@ void CB2_InitOptionMenu(void)
}
case 1:
ResetPaletteFade();
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
gMain.state++;
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index 6e9efd342..a8b49a8eb 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -13,7 +13,7 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
struct ResetRtcStruct
{
@@ -438,8 +438,8 @@ void CB2_InitResetRtcScreen(void)
ResetOamRange(0, 128);
LoadOam();
- remove_some_task();
- dp12_8087EA4();
+ ScanlineEffect_Stop();
+ ScanlineEffect_Clear();
ResetSpriteData();
ResetTasks();
ResetPaletteFade();
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index 70942fc29..ab43ac716 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -18,7 +18,7 @@
#include "string_util.h"
#include "strings2.h"
#include "task.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
#include "ewram.h"
@@ -256,7 +256,7 @@ static void sub_8093254(void)
ewram0_2.var_5 ^= 1;
}
if (ewram0_2.var_4)
- DmaCopy16(3, &gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 0x140);
+ DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140);
}
static void sub_80932AC(Callback callBack)
@@ -730,9 +730,9 @@ bool8 sub_8093AA0(struct Task *task)
u32 i;
ewram0_2.var_4 = FALSE;
- dp12_8087EA4();
+ ScanlineEffect_Clear();
for (i = 0; i < 0xA0; i++)
- gUnknown_03004DE0[1][i] = -4;
+ gScanlineEffectRegBuffers[1][i] = -4;
SetHBlankCallback(sub_8093D7C);
ewram0_2.var_4 = TRUE;
task->data[0]++;
@@ -768,7 +768,7 @@ bool8 sub_8093AF0(struct Task *task)
for (i = 0; i < r7; i++)
{
- gUnknown_03004DE0.filler0[i] = -4 - (u32)i;
+ gScanlineEffectRegBuffers.filler0[i] = -4 - (u32)i;
}
//_08093B74
for (; i < r9; i++)
@@ -776,10 +776,10 @@ bool8 sub_8093AF0(struct Task *task)
u16 var = r6 >> 16;
r6 += r5;
r5 -= sp0;
- gUnknown_03004DE0.filler0[i] = -4 + var;
+ gScanlineEffectRegBuffers.filler0[i] = -4 + var;
}
for (; i < 160; i++)
- gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16);
+ gScanlineEffectRegBuffers.filler0[i] = -4 + (u16)(r10 >> 16);
ewram0_2.var_4 = 1;
if (task->data[1] > 0x4A)
task->data[0]++;
@@ -840,7 +840,7 @@ _08093B18:\n\
movs r3, 0\n\
cmp r3, r7\n\
bcs _08093B74\n\
- ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093C04 @ =gScanlineEffectRegBuffers\n\
mov r12, r2\n\
ldr r0, _08093C08 @ =0x0000fffc\n\
adds r4, r0, 0\n\
@@ -866,7 +866,7 @@ _08093B74:\n\
lsrs r7, r4, 16\n\
cmp r2, r0\n\
bge _08093BAE\n\
- ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093C04 @ =gScanlineEffectRegBuffers\n\
mov r9, r0\n\
ldr r4, _08093C08 @ =0x0000fffc\n\
mov r12, r4\n\
@@ -894,7 +894,7 @@ _08093BAE:\n\
asrs r0, 16\n\
cmp r0, 0x9F\n\
bgt _08093BD4\n\
- ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r4, _08093C04 @ =gScanlineEffectRegBuffers\n\
ldr r0, _08093C08 @ =0x0000fffc\n\
adds r2, r1, r0\n\
_08093BBE:\n\
@@ -934,7 +934,7 @@ _08093BEA:\n\
.align 2, 0\n\
_08093BFC: .4byte gSharedMem\n\
_08093C00: .4byte 0xffff0000\n\
-_08093C04: .4byte gUnknown_03004DE0\n\
+_08093C04: .4byte gScanlineEffectRegBuffers\n\
_08093C08: .4byte 0x0000fffc\n\
.syntax divided\n");
}
@@ -1000,7 +1000,7 @@ _08093C5C:\n\
movs r3, 0\n\
cmp r3, r7\n\
bcs _08093CB8\n\
- ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093D48 @ =gScanlineEffectRegBuffers\n\
mov r12, r2\n\
ldr r0, _08093D4C @ =0x0000fffc\n\
adds r4, r0, 0\n\
@@ -1026,7 +1026,7 @@ _08093CB8:\n\
lsrs r7, r4, 16\n\
cmp r2, r0\n\
bge _08093CF2\n\
- ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093D48 @ =gScanlineEffectRegBuffers\n\
mov r9, r0\n\
ldr r3, _08093D4C @ =0x0000fffc\n\
mov r12, r3\n\
@@ -1054,7 +1054,7 @@ _08093CF2:\n\
asrs r0, 16\n\
cmp r0, 0x9F\n\
bgt _08093D18\n\
- ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r4, _08093D48 @ =gScanlineEffectRegBuffers\n\
ldr r0, _08093D4C @ =0x0000fffc\n\
adds r2, r1, r0\n\
_08093D02:\n\
@@ -1094,7 +1094,7 @@ _08093D2E:\n\
.align 2, 0\n\
_08093D40: .4byte gSharedMem\n\
_08093D44: .4byte 0xffff0000\n\
-_08093D48: .4byte gUnknown_03004DE0\n\
+_08093D48: .4byte gScanlineEffectRegBuffers\n\
_08093D4C: .4byte 0x0000fffc\n\
.syntax divided\n");
}
@@ -1113,7 +1113,7 @@ bool8 sub_8093D50(struct Task *task)
void sub_8093D7C(void)
{
- u16 bgVOffset = gUnknown_03004DE0[1][REG_VCOUNT & 0xFF];
+ u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF];
REG_BG0VOFS = bgVOffset;
REG_BG1VOFS = bgVOffset;
diff --git a/src/field/diploma.c b/src/field/diploma.c
index 7028eec02..978eca7eb 100644
--- a/src/field/diploma.c
+++ b/src/field/diploma.c
@@ -10,7 +10,7 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
static void VBlankCB(void);
static void MainCB2(void);
@@ -62,7 +62,7 @@ void CB2_ShowDiploma(void)
LZ77UnCompVram(gDiplomaTiles, (void *)VRAM);
LZ77UnCompVram(gDiplomaTilemap, (void *)(VRAM + 0x3000));
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c
index 6e818ce68..61301c5a9 100644
--- a/src/field/field_screen_effect.c
+++ b/src/field/field_screen_effect.c
@@ -7,13 +7,13 @@
#include "script.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
const s32 gMaxFlashLevel = 4;
-const static struct UnknownTaskStruct gUnknown_0839ACEC =
+const static struct ScanlineEffectParams gUnknown_0839ACEC =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -64,18 +64,18 @@ static void sub_8081424(u8 taskId)
switch (data[0])
{
case 0:
- sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]);
+ sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]);
data[0] = 1;
break;
case 1:
- sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]);
+ sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]);
data[0] = 0;
data[3] += data[5];
if (data[3] > data[4])
{
if (data[6] == 1)
{
- remove_some_task();
+ ScanlineEffect_Stop();
data[0] = 2;
}
else
@@ -85,7 +85,7 @@ static void sub_8081424(u8 taskId)
}
break;
case 2:
- dp12_8087EA4();
+ ScanlineEffect_Clear();
DestroyTask(taskId);
break;
}
@@ -140,8 +140,8 @@ void sub_80815E0(u8 a1)
{
if (a1)
{
- sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]);
- CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
+ sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]);
+ CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
}
@@ -208,10 +208,10 @@ static void sub_80816A8(u8 taskId)
REG_BLDALPHA = 1804;
REG_WININ = 63;
REG_WINOUT = 30;
- sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1);
- CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
- //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
- sub_80895F8(gUnknown_0839ACEC);
+ sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1);
+ CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
+ //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ ScanlineEffect_SetParams(gUnknown_0839ACEC);
data[0] = 1;
break;
case 1:
diff --git a/src/field/item_menu.c b/src/field/item_menu.c
index 2be5f1e1d..e0575af4c 100644
--- a/src/field/item_menu.c
+++ b/src/field/item_menu.c
@@ -33,7 +33,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
// External stuff
@@ -397,7 +397,7 @@ static bool8 SetupBagMultistep(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 9fab20876..86b0a5dac 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -47,7 +47,7 @@
#include "tileset_anim.h"
#include "time_events.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "wild_encounter.h"
#ifdef SAPPHIRE
@@ -142,7 +142,7 @@ const struct UCoords32 gUnknown_0821664C[] =
{ 1, -1},
};
-const struct UnknownTaskStruct gUnknown_08216694 =
+const struct ScanlineEffectParams gUnknown_08216694 =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -1410,7 +1410,7 @@ void VBlankCB_Field(void)
{
LoadOam();
ProcessSpriteCopyRequests();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
sub_8057A58();
TransferPlttBuffer();
sub_8072E74();
@@ -1422,7 +1422,7 @@ void sub_8054814(void)
if (val)
{
sub_80815E0(val);
- sub_80895F8(gUnknown_08216694);
+ ScanlineEffect_SetParams(gUnknown_08216694);
}
}
@@ -1669,7 +1669,7 @@ void sub_8054BA8(void)
REG_DISPCNT = 0;
- remove_some_task();
+ ScanlineEffect_Stop();
DmaClear16(3, PLTT + 2, PLTT_SIZE - 2);
@@ -1731,7 +1731,7 @@ void sub_8054D4C(u32 a1)
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
ResetCameraUpdateInfo();
InstallCameraPanAheadCallback();
sub_805C7C4(0);
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 9cad5bd73..7d243f569 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -32,7 +32,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
#include "script_pokemon_80F9.h"
#include "ewram.h"
@@ -648,7 +648,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c
index dd94e1755..7e8bdc2ce 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -8,7 +8,7 @@
#include "script.h"
#include "strings.h"
#include "task.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "text.h"
#include "main.h"
#include "menu.h"
@@ -255,7 +255,7 @@ static bool8 sub_810B6C0(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
diff --git a/src/field/shop.c b/src/field/shop.c
index d56d65c3f..1dc6ba0cd 100644
--- a/src/field/shop.c
+++ b/src/field/shop.c
@@ -15,7 +15,7 @@
#include "strings.h"
#include "task.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "field_map_obj.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
@@ -266,7 +266,7 @@ void BuyMenuDrawGraphics(void)
register u16 zero2 asm("r5");
sub_80F9438();
- remove_some_task();
+ ScanlineEffect_Stop();
REG_BG1HOFS = (zero2 = 0);
REG_BG1VOFS = zero2;
REG_BG2HOFS = zero2;
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 5b2276d1b..d6881cb01 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -28,7 +28,7 @@
#include "strings2.h"
#include "task.h"
#include "trainer_card.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
//Menu actions
enum {
@@ -750,7 +750,7 @@ static bool32 sub_80719FC(u8 *step)
REG_DISPCNT = 0;
SetVBlankCallback(NULL);
- remove_some_task();
+ ScanlineEffect_Stop();
DmaClear16(3, PLTT, PLTT_SIZE);
addr = (void *)VRAM;
size = 0x18000;
@@ -771,7 +771,7 @@ static bool32 sub_80719FC(u8 *step)
ResetSpriteData();
ResetTasks();
ResetPaletteFade();
- dp12_8087EA4();
+ ScanlineEffect_Clear();
break;
case 2:
Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c
index 91b706e78..418488774 100644
--- a/src/field/starter_choose.c
+++ b/src/field/starter_choose.c
@@ -14,7 +14,7 @@
#include "strings.h"
#include "task.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern u16 gSpecialVar_Result;
extern struct SpriteTemplate gUnknown_02024E8C;
@@ -285,7 +285,7 @@ void CB2_ChooseStarter(void)
LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000));
LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c
index 9363498ba..42020c49a 100644
--- a/src/field/use_pokeblock.c
+++ b/src/field/use_pokeblock.c
@@ -117,7 +117,7 @@ static void sub_81365A0(void);
static void sub_81365C8(void);
static void sub_8136638(void);
static void sub_81368A4(void);
-void sub_8089668(void);
+void ScanlineEffect_InitHBlankDmaTransfer(void);
static void sub_8136B44(void);
static u8 sub_81370E4(u8);
static void sub_8136BB8(void);
@@ -194,7 +194,7 @@ static void sub_8136264(void)
ProcessSpriteCopyRequests();
TransferPlttBuffer();
sub_80F5CDC(6);
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
diff --git a/src/field/wallclock.c b/src/field/wallclock.c
index 4f2a6dccd..aaa7f9ae8 100644
--- a/src/field/wallclock.c
+++ b/src/field/wallclock.c
@@ -10,7 +10,7 @@
#include "strings2.h"
#include "task.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern u16 gSpecialVar_0x8004;
extern u8 gMiscClock_Gfx[];
@@ -229,7 +229,7 @@ static void LoadWallClockGraphics(void)
LoadPalette(gMiscClockMale_Pal, 0, 32);
else
LoadPalette(gMiscClockFemale_Pal, 0, 32);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/asm/libagbsyscall.s b/src/libs/libagbsyscall.s
index de59d4c27..cdf6ca905 100644
--- a/asm/libagbsyscall.s
+++ b/src/libs/libagbsyscall.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.syntax unified
.text
diff --git a/asm/libgcnmultiboot.s b/src/libs/libgcnmultiboot.s
index 91bc1890c..8c8b94998 100644
--- a/asm/libgcnmultiboot.s
+++ b/src/libs/libgcnmultiboot.s
@@ -1,7 +1,7 @@
@ This library can be used to download and execute a multi-boot image from
@ a GameCube using the JOY Bus protocol over the link cable.
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/constants.inc"
.equiv GCMB_STRUCT_COUNTER1, 0x00
diff --git a/asm/m4a_1.s b/src/libs/m4a_1.s
index 849cf5c2d..be8b44488 100644
--- a/asm/m4a_1.s
+++ b/src/libs/m4a_1.s
@@ -1,4 +1,4 @@
- .include "asm/macros.inc"
+ .include "include/macros.inc"
.include "constants/gba_constants.inc"
.include "constants/m4a_constants.inc"
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
index ab43c033a..921a3ad93 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -15,7 +15,7 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
struct UnkMailStruct
@@ -320,7 +320,7 @@ static u8 sub_80F8A28(void)
{
case 0:
SetVBlankCallback(NULL);
- remove_some_task();
+ ScanlineEffect_Stop();
REG_DISPCNT = 0;
RETURN_UP_STATE;
diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c
index 48ce26bb8..4fb6a4920 100644
--- a/src/pokemon/pokedex.c
+++ b/src/pokemon/pokedex.c
@@ -23,7 +23,7 @@
#include "strings.h"
#include "task.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
#define NATIONAL_DEX_COUNT 386
@@ -1419,7 +1419,7 @@ void CB2_InitPokedex(void)
}
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
@@ -1494,7 +1494,7 @@ u8 unref_sub_808C540(void (*func)(u8))
SetVBlankCallback(NULL);
sub_8091060(0x200);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetPaletteFade();
savedIme = REG_IME;
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index d98383c6d..bf8306fc0 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -29,7 +29,7 @@
#include "strings2.h"
#include "task.h"
#include "tv.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
static void sub_809FC0C(void);
static void sub_809FEB8(void);
@@ -123,12 +123,12 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8);
extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gUnknown_020384F0;
extern u8 gUnknown_08208238[];
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_Y;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG2_X;
-extern u16 gUnknown_030041B0;
+extern u16 gBattle_BG3_X;
extern TaskFunc gUnknown_03005CF0;
extern struct Sprite *gUnknown_020384F4;
extern struct SpriteTemplate gUnknown_02024E8C;
@@ -586,8 +586,8 @@ void sub_809D85C(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
LoadOam();
ProcessSpriteCopyRequests();
@@ -701,7 +701,7 @@ bool8 sub_809DA84(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
@@ -813,11 +813,11 @@ bool8 sub_809DA84(void)
case 20:
if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
{
- gUnknown_030041B0 = 256;
+ gBattle_BG3_X = 256;
}
else
{
- gUnknown_030041B0 = 0;
+ gBattle_BG3_X = 0;
}
gMain.state++;
@@ -872,8 +872,8 @@ static void sub_809DE64(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 0;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
@@ -2176,11 +2176,11 @@ void sub_809F43C(u8 taskId)
pssData.loadGfxState = 0;
if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
{
- gUnknown_030041B0 = 256;
+ gBattle_BG3_X = 256;
}
else
{
- gUnknown_030041B0 = 0;
+ gBattle_BG3_X = 0;
}
gMain.state++;
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 3b534c96c..b31be2ce1 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -18,7 +18,7 @@
#include "sound.h"
#include "task.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
extern u8 ewram[];
@@ -329,7 +329,7 @@ void sub_80EBA5C()
ResetTasks();
break;
case 6:
- remove_some_task();
+ ScanlineEffect_Stop();
break;
case 7:
sub_80F1A90();
@@ -436,7 +436,7 @@ void sub_80EBD4C()
ProcessSpriteCopyRequests();
TransferPlttBuffer();
sub_80F5BF0();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
void sub_80EBD68()
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 2691da859..2b5a3c036 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -786,7 +786,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite)
sprite->pos2.y = 0;
}
-void sub_8078764(struct Sprite *sprite, u8 a2)
+void sub_8078764(struct Sprite *sprite, bool8 a2)
{
if (!a2)
{
@@ -2105,7 +2105,7 @@ int sub_807A100(u8 slot, u8 a2)
}
}
-void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4)
+void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4)
{
u8 v1, v2;
s16 v3, v4;
diff --git a/src/roulette.c b/src/roulette.c
index e88c36c01..6d79f9d38 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -23,7 +23,7 @@
#include "task.h"
#include "text.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
asm(".include \"constants/gba_constants.inc\"");
@@ -578,7 +578,7 @@ void sub_8115384(void)
{
case 0x0:
SetVBlankCallback(NULL);
- remove_some_task();
+ ScanlineEffect_Stop();
sub_80F9438();
sub_80F9368();
REG_BG2CNT = 0x4686;
diff --git a/src/scanline_effect.c b/src/scanline_effect.c
new file mode 100644
index 000000000..b4de0689f
--- /dev/null
+++ b/src/scanline_effect.c
@@ -0,0 +1,261 @@
+#include "global.h"
+#include "data2.h"
+#include "task.h"
+#include "trig.h"
+#include "scanline_effect.h"
+
+static void CopyValue16Bit(void);
+static void CopyValue32Bit(void);
+
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+
+EWRAM_DATA static u8 sShouldStopWaveTask = FALSE;
+
+struct ScanlineEffect gScanlineEffect;
+
+// Per-scanline register values.
+// This is double buffered so that it can be safely written to at any time
+// without overwriting the buffer that the DMA is currently reading
+u16 gScanlineEffectRegBuffers[2][0x3C0];
+
+void ScanlineEffect_Stop(void)
+{
+ gScanlineEffect.state = 0;
+ DmaStop(0);
+ if (gScanlineEffect.waveTaskId != 0xFF)
+ {
+ DestroyTask(gScanlineEffect.waveTaskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+}
+
+void ScanlineEffect_Clear(void)
+{
+ CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ gScanlineEffect.dmaSrcBuffers[0] = NULL;
+ gScanlineEffect.dmaSrcBuffers[1] = NULL;
+ gScanlineEffect.dmaDest = NULL;
+ gScanlineEffect.dmaControl = 0;
+ gScanlineEffect.srcBuffer = 0;
+ gScanlineEffect.state = 0;
+ gScanlineEffect.unused16 = 0;
+ gScanlineEffect.unused17 = 0;
+ gScanlineEffect.waveTaskId = 0xFF;
+}
+
+void ScanlineEffect_SetParams(struct ScanlineEffectParams params)
+{
+ if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit
+ {
+ // Set the DMA src to the value for the second scanline because the
+ // first DMA transfer occurs in HBlank *after* the first scanline is drawn
+ gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1;
+ gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1;
+ gScanlineEffect.setFirstScanlineReg = CopyValue16Bit;
+ }
+ else // assume 32-bit
+ {
+ // Set the DMA src to the value for the second scanline because the
+ // first DMA transfer occurs in HBlank *after* the first scanline is drawn
+ gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1;
+ gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1;
+ gScanlineEffect.setFirstScanlineReg = CopyValue32Bit;
+ }
+
+ gScanlineEffect.dmaControl = params.dmaControl;
+ gScanlineEffect.dmaDest = params.dmaDest;
+ gScanlineEffect.state = params.initState;
+ gScanlineEffect.unused16 = params.unused9;
+ gScanlineEffect.unused17 = params.unused9;
+}
+
+void ScanlineEffect_InitHBlankDmaTransfer(void)
+{
+ if (gScanlineEffect.state == 0)
+ {
+ return;
+ }
+ else if (gScanlineEffect.state == 3)
+ {
+ gScanlineEffect.state = 0;
+ DmaStop(0);
+ sShouldStopWaveTask = TRUE;
+ }
+ else
+ {
+ DmaStop(0);
+ // Set DMA to copy to dest register on each HBlank for the next frame.
+ // The HBlank DMA transfers do not occurr during VBlank, so the transfer
+ // will begin on the HBlank after the first scanline
+ DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl);
+ // Manually set the reg for the first scanline
+ gScanlineEffect.setFirstScanlineReg();
+ // Swap current buffer
+ gScanlineEffect.srcBuffer ^= 1;
+ }
+}
+
+// These two functions are used to copy the register for the first scanline,
+// depending whether it is a 16-bit register or a 32-bit register.
+
+static void CopyValue16Bit(void)
+{
+ u16 *dest = (u16 *)gScanlineEffect.dmaDest;
+ u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+static void CopyValue32Bit(void)
+{
+ u32 *dest = (u32 *)gScanlineEffect.dmaDest;
+ u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+#define tStartLine data[0]
+#define tEndLine data[1]
+#define tWaveLength data[2]
+#define tSrcBufferOffset data[3]
+#define tFramesUntilMove data[4]
+#define tDelayInterval data[5]
+#define tRegOffset data[6]
+#define tApplyBattleBgOffsets data[7]
+
+static void TaskFunc_UpdateWavePerFrame(u8 taskId)
+{
+ int value = 0;
+ int i;
+ int offset;
+
+ if (sShouldStopWaveTask)
+ {
+ DestroyTask(taskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+ else
+ {
+ if (gTasks[taskId].tApplyBattleBgOffsets)
+ {
+ switch (gTasks[taskId].tRegOffset)
+ {
+ case SCANLINE_EFFECT_REG_BG0HOFS:
+ value = gBattle_BG0_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG0VOFS:
+ value = gBattle_BG0_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG1HOFS:
+ value = gBattle_BG1_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG1VOFS:
+ value = gBattle_BG1_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG2HOFS:
+ value = gBattle_BG2_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG2VOFS:
+ value = gBattle_BG2_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG3HOFS:
+ value = gBattle_BG3_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG3VOFS:
+ value = gBattle_BG3_Y;
+ break;
+ }
+ }
+ if (gTasks[taskId].tFramesUntilMove != 0)
+ {
+ gTasks[taskId].tFramesUntilMove--;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+ }
+ else
+ {
+ gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+
+ // increment src buffer offset
+ gTasks[taskId].tSrcBufferOffset++;
+ if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength)
+ gTasks[taskId].tSrcBufferOffset = 0;
+ }
+ }
+}
+
+static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused)
+{
+ u16 i = 0;
+ u8 theta = 0;
+
+ while (i < 256)
+ {
+ buffer[i] = (gSineTable[theta] * amplitude) / 256;
+ theta += frequency;
+ i++;
+ }
+}
+
+// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive).
+// 'frequency' and 'amplitude' control the frequency and amplitude of the wave.
+// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames.
+// 'regOffset' is the offset of the video register to modify.
+u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets)
+{
+ int i;
+ int offset;
+ struct ScanlineEffectParams params;
+ u8 taskId;
+
+ ScanlineEffect_Clear();
+
+ params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset);
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+
+ taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0);
+
+ gTasks[taskId].tStartLine = startLine;
+ gTasks[taskId].tEndLine = endLine;
+ gTasks[taskId].tWaveLength = 256 / frequency;
+ gTasks[taskId].tSrcBufferOffset = 0;
+ gTasks[taskId].tFramesUntilMove = delayInterval;
+ gTasks[taskId].tDelayInterval = delayInterval;
+ gTasks[taskId].tRegOffset = regOffset;
+ gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets;
+
+ gScanlineEffect.waveTaskId = taskId;
+ sShouldStopWaveTask = FALSE;
+
+ GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine);
+
+ offset = 320;
+ for (i = startLine; i < endLine; i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset];
+ gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset];
+ offset++;
+ }
+
+ return taskId;
+}
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index 52a0aeebf..d8e099130 100644
--- a/src/scene/cable_car.c
+++ b/src/scene/cable_car.c
@@ -14,7 +14,7 @@
#include "decompress.h"
#include "field_weather.h"
#include "field_map_obj.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "event_data.h"
#include "cable_car_util.h"
#include "constants/map_objects.h"
@@ -208,7 +208,7 @@ static void CableCarMainCallback_Setup(void)
case 0:
default:
SetVBlankCallback(NULL);
- remove_some_task();
+ ScanlineEffect_Stop();
DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000);
DmaFill32Defvars(3, 0, OAM, OAM_SIZE);
DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE);
diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c
index 401872644..3aa898b03 100644
--- a/src/scene/contest_painting.c
+++ b/src/scene/contest_painting.c
@@ -11,7 +11,7 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
static u8 gUnknown_03000750;
@@ -147,7 +147,7 @@ static void ShowContestPainting(void)
switch (gMain.state)
{
case 0:
- remove_some_task();
+ ScanlineEffect_Stop();
SetVBlankCallback(NULL);
gUnknown_03005E8C = &ewram15DE0;
ContestPaintingInitVars(TRUE);
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index 167130aa5..53eb2f1e8 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -9,7 +9,7 @@
#include "pokemon.h"
#include "string_util.h"
#include "battle.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "data2.h"
#include "decompress.h"
#include "m4a.h"
@@ -71,8 +71,8 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gUnknown_030041B0;
-extern u16 gUnknown_030041B8;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
extern u8 gBattleTerrain;
extern u8 gReservedSpritePaletteCount;
extern u16 gMoveToLearn;
@@ -206,8 +206,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 256;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 256;
+ gBattle_BG3_Y = 0;
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
@@ -215,7 +215,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
sub_800D6D4();
sub_800DAB8();
ResetSpriteData();
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
FreeAllSpritePalettes();
@@ -314,8 +314,8 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 256;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 256;
+ gBattle_BG3_Y = 0;
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
@@ -368,8 +368,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
gBattle_BG1_Y = 0;
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- gUnknown_030041B0 = 256;
- gUnknown_030041B8 = 0;
+ gBattle_BG3_X = 256;
+ gBattle_BG3_Y = 0;
gMain.state++;
break;
case 1:
@@ -3929,12 +3929,12 @@ static void VBlankCB_EvolutionScene(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void VBlankCB_TradeEvolutionScene(void)
@@ -3945,12 +3945,12 @@ static void VBlankCB_TradeEvolutionScene(void)
REG_BG1VOFS = gBattle_BG1_Y;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- REG_BG3HOFS = gUnknown_030041B0;
- REG_BG3VOFS = gUnknown_030041B8;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
}
static void sub_81150D8(void)
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
index 948c288ff..303dcf3e0 100644
--- a/src/scene/hall_of_fame.c
+++ b/src/scene/hall_of_fame.c
@@ -16,6 +16,7 @@
#include "data2.h"
#include "decompress.h"
#include "random.h"
+#include "scanline_effect.h"
#include "trig.h"
#include "ewram.h"
@@ -95,7 +96,6 @@ bool8 sub_80C5DCC(void);
bool8 sub_80C5F98(void);
void ReturnFromHallOfFamePC(void);
u16 SpeciesToPokedexNum(u16 species);
-void remove_some_task(void);
// data and gfx
@@ -1278,7 +1278,7 @@ static void sub_81433E0(void)
static void sub_8143570(void)
{
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
diff --git a/src/scene/intro.c b/src/scene/intro.c
index 4dc6cc91c..d7d772a40 100644
--- a/src/scene/intro.c
+++ b/src/scene/intro.c
@@ -19,7 +19,7 @@
#include "task.h"
#include "title_screen.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "ewram.h"
extern struct SpriteTemplate gUnknown_02024E8C;
@@ -873,7 +873,7 @@ static u8 SetUpCopyrightScreen(void)
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
ResetPaletteFade();
LoadCopyrightGraphics(0, 0x3800, 0);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c
index 6cee74cce..f0f1264a0 100755
--- a/src/scene/intro_credits_graphics.c
+++ b/src/scene/intro_credits_graphics.c
@@ -19,7 +19,7 @@
#include "task.h"
#include "title_screen.h"
#include "trig.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
// define register constants for the inline asm
asm(".include \"constants/gba_constants.inc\"\n");
diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c
index 26fe088d5..202b752a6 100644
--- a/src/scene/title_screen.c
+++ b/src/scene/title_screen.c
@@ -13,7 +13,7 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#if ENGLISH
#define VERSION_BANNER_SHAPE 1
@@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground)
static void VBlankCB(void)
{
- sub_8089668();
+ ScanlineEffect_InitHBlankDmaTransfer();
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
@@ -644,7 +644,7 @@ void CB2_InitTitleScreen(void)
LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000));
LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800));
LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes));
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void)
if (!UpdatePaletteFade())
{
StartPokemonLogoShine(FALSE);
- sub_8089944(0, 0xA0, 4, 4, 0, 4, 1);
+ ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE);
SetMainCallback2(MainCB2);
}
break;
diff --git a/src/unknown_task.c b/src/unknown_task.c
deleted file mode 100644
index 2c71bfb08..000000000
--- a/src/unknown_task.c
+++ /dev/null
@@ -1,235 +0,0 @@
-#include "global.h"
-#include "data2.h"
-#include "task.h"
-#include "trig.h"
-#include "unknown_task.h"
-
-static void sub_80896F4(void);
-static void sub_8089714(void);
-
-extern u16 gUnknown_030041B0;
-extern u16 gBattle_BG1_Y;
-extern u16 gUnknown_030041B8;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG1_X;
-
-extern u8 gUnknown_0202FFA4;
-
-extern struct UnknownTaskStruct2 gUnknown_03004DC0;
-
-// Is this a struct?
-extern u16 gUnknown_03004DE0[][0x3C0];
-
-void remove_some_task(void)
-{
- gUnknown_03004DC0.unk15 = 0;
- DmaStop(0);
- if (gUnknown_03004DC0.taskId != 0xFF)
- {
- DestroyTask(gUnknown_03004DC0.taskId);
- gUnknown_03004DC0.taskId = 0xFF;
- }
-}
-
-void dp12_8087EA4(void)
-{
- CpuFill16(0, gUnknown_03004DE0, 0x780 * 2);
- gUnknown_03004DC0.src[0] = 0;
- gUnknown_03004DC0.src[1] = 0;
- gUnknown_03004DC0.dest = 0;
- gUnknown_03004DC0.unkC = 0;
- gUnknown_03004DC0.srcBank = 0;
- gUnknown_03004DC0.unk15 = 0;
- gUnknown_03004DC0.unk16 = 0;
- gUnknown_03004DC0.unk17 = 0;
- gUnknown_03004DC0.taskId = 0xFF;
-}
-
-void sub_80895F8(struct UnknownTaskStruct unk)
-{
- if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1))
- {
- gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1];
- gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1];
- gUnknown_03004DC0.unk10 = sub_80896F4;
- }
- else
- {
- gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2];
- gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2];
- gUnknown_03004DC0.unk10 = sub_8089714;
- }
-
- gUnknown_03004DC0.unkC = unk.control;
- gUnknown_03004DC0.dest = unk.dest;
- gUnknown_03004DC0.unk15 = unk.unk8;
- gUnknown_03004DC0.unk16 = unk.unk9;
- gUnknown_03004DC0.unk17 = unk.unk9;
-}
-
-void sub_8089668(void)
-{
- if (gUnknown_03004DC0.unk15)
- {
- if (gUnknown_03004DC0.unk15 == 3)
- {
- gUnknown_03004DC0.unk15 = 0;
- DmaStop(0);
- gUnknown_0202FFA4 = 1;
- }
- else
- {
- DmaStop(0);
- DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC);
- gUnknown_03004DC0.unk10();
- gUnknown_03004DC0.srcBank ^= 1;
- }
- }
-}
-
-static void sub_80896F4(void)
-{
- u16 *dest = (u16 *)gUnknown_03004DC0.dest;
- u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
- *dest = *src;
-}
-
-static void sub_8089714(void)
-{
- u32 *dest = (u32 *)gUnknown_03004DC0.dest;
- u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
- *dest = *src;
-}
-
-static void task00_for_dp12(u8 taskId)
-{
- int value = 0;
-
- if (gUnknown_0202FFA4)
- {
- DestroyTask(taskId);
- gUnknown_03004DC0.taskId = 0xFF;
- }
- else
- {
- if (gTasks[taskId].data[7])
- {
- switch (gTasks[taskId].data[6])
- {
- case 0x0:
- value = gBattle_BG0_X;
- break;
- case 0x2:
- value = gBattle_BG0_Y;
- break;
- case 0x4:
- value = gBattle_BG1_X;
- break;
- case 0x6:
- value = gBattle_BG1_Y;
- break;
- case 0x8:
- value = gBattle_BG2_X;
- break;
- case 0xA:
- value = gBattle_BG2_Y;
- break;
- case 0xC:
- value = gUnknown_030041B0;
- break;
- case 0xE:
- value = gUnknown_030041B8;
- break;
- }
- }
- if (gTasks[taskId].data[4])
- {
- int i;
- int offset;
- gTasks[taskId].data[4]--;
- offset = gTasks[taskId].data[3] + 320;
- for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
- {
- gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
- offset++;
- }
- }
- else
- {
- int i;
- int offset;
- gTasks[taskId].data[4] = gTasks[taskId].data[5];
- offset = gTasks[taskId].data[3] + 320;
- for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
- {
- gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
- offset++;
- }
- gTasks[taskId].data[3]++;
- if (gTasks[taskId].data[3] == gTasks[taskId].data[2])
- {
- gTasks[taskId].data[3] = 0;
- }
- }
- }
-}
-
-static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4)
-{
- u16 i = 0;
- u8 offset = 0;
-
- while (i < 0x100)
- {
- a1[i] = (gSineTable[offset] * a3) / 256;
- offset += a2;
- i++;
- }
-}
-
-u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
-{
- int i;
- int offset;
- struct UnknownTaskStruct unk;
- u8 taskId;
-
- dp12_8087EA4();
-
- unk.dest = (void *)(REG_ADDR_BG0HOFS + a6);
- unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1;
- unk.unk8 = 1;
- unk.unk9 = 0;
-
- sub_80895F8(unk);
-
- taskId = CreateTask(task00_for_dp12, 0);
-
- gTasks[taskId].data[0] = a1;
- gTasks[taskId].data[1] = a2;
- gTasks[taskId].data[2] = 256 / a3;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = a5;
- gTasks[taskId].data[5] = a5;
- gTasks[taskId].data[6] = a6;
- gTasks[taskId].data[7] = a7;
-
- gUnknown_03004DC0.taskId = taskId;
- gUnknown_0202FFA4 = 0;
-
- sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1);
-
- offset = 320;
-
- for (i = a1; i < a2; i++)
- {
- gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset];
- gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset];
- offset++;
- }
-
- return taskId;
-}
diff --git a/sym_bss.txt b/sym_bss.txt
index 16df5cef2..6e95a609f 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -34,7 +34,7 @@
.include "src/field/field_specials.o"
.include "src/pokemon/learn_move.o"
.include "src/field/player_pc.o"
- .include "asm/m4a_1.o"
+ .include "src/libs/m4a_1.o"
.include "src/libs/agb_flash.o"
.include "src/libs/siirtc.o"
.include "tools/agbcc/lib/libgcc.a:dp-bit.o"
diff --git a/sym_common.txt b/sym_common.txt
index f620e9e49..cfb1b6b13 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -8,13 +8,13 @@
@ battle
.align 2
-gUnknown_030041B0: @ 30041B0
+gBattle_BG3_X: @ 30041B0
.space 0x4
gBattle_BG1_Y: @ 30041B4
.space 0x4
-gUnknown_030041B8: @ 30041B8
+gBattle_BG3_Y: @ 30041B8
.space 0x8
gBattleTextBuff1: @ 30041C0
@@ -137,29 +137,7 @@ gUnknown_03004AE4: @ 3004AE4
.include "debug/mori_debug_menu.o"
@ unknown_task
-
- .align 4
-gUnknown_03004DC0: @ 3004DC0
- .space 0x20
-
-gUnknown_03004DE0: @ 3004DE0
- .space 0x2
-
-gUnknown_03004DE2: @ 3004DE2
- .space 0x2
-
-gUnknown_03004DE4: @ 3004DE4
- .space 0x27C
-
-gUnknown_03005060: @ 3005060
- .space 0x500
-
-gUnknown_03005560: @ 3005560
- .space 0x140
-
-gUnknown_030056A0: @ 30056A0
- .space 0x640
-
+ .include "scanline_effect.o"
.include "pokemon/pokemon_menu.o"
.include "pokemon/pokedex.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index fc4ea94ef..dcbadf96e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -368,12 +368,7 @@ gUnknown_0202FF58: @ 202FF58
.include "src/battle/battle_setup.o"
.include "src/field/wild_encounter.o"
.include "src/field/field_effect.o"
-
-@ unknown_task
-
-gUnknown_0202FFA4: @ 202FFA4
- .space 0x4
-
+ .include "src/scanline_effect.o"
.include "src/pokemon/pokemon_menu.o"
.include "src/pokemon/pokedex.o"
.include "src/engine/trainer_card.o"
diff --git a/tilesets.mk b/tilesets.mk
index 9bb9a1f3d..ae0e57c9b 100644
--- a/tilesets.mk
+++ b/tilesets.mk
@@ -1,185 +1,89 @@
TILESETDIR := data/tilesets
-$(TILESETDIR)/secondary/petalburg/tiles.4bpp: $(TILESETDIR)/secondary/petalburg/tiles.png
- $(GFX) $< $@ -num_tiles 159
-
-$(TILESETDIR)/secondary/rustboro/tiles.4bpp: $(TILESETDIR)/secondary/rustboro/tiles.png
- $(GFX) $< $@ -num_tiles 498
-
-$(TILESETDIR)/secondary/dewford/tiles.4bpp: $(TILESETDIR)/secondary/dewford/tiles.png
- $(GFX) $< $@ -num_tiles 343
-
-$(TILESETDIR)/secondary/slateport/tiles.4bpp: $(TILESETDIR)/secondary/slateport/tiles.png
- $(GFX) $< $@ -num_tiles 504
-
-$(TILESETDIR)/secondary/mauville/tiles.4bpp: $(TILESETDIR)/secondary/mauville/tiles.png
- $(GFX) $< $@ -num_tiles 450
-
-$(TILESETDIR)/secondary/lavaridge/tiles.4bpp: $(TILESETDIR)/secondary/lavaridge/tiles.png
- $(GFX) $< $@ -num_tiles 348
-
-$(TILESETDIR)/secondary/fallarbor/tiles.4bpp: $(TILESETDIR)/secondary/fallarbor/tiles.png
- $(GFX) $< $@ -num_tiles 374
-
-$(TILESETDIR)/secondary/fortree/tiles.4bpp: $(TILESETDIR)/secondary/fortree/tiles.png
- $(GFX) $< $@ -num_tiles 493
-
-$(TILESETDIR)/secondary/mossdeep/tiles.4bpp: $(TILESETDIR)/secondary/mossdeep/tiles.png
- $(GFX) $< $@ -num_tiles 499
-
-$(TILESETDIR)/secondary/pacifidlog/tiles.4bpp: $(TILESETDIR)/secondary/pacifidlog/tiles.png
- $(GFX) $< $@ -num_tiles 504
-
-$(TILESETDIR)/secondary/sootopolis/tiles.4bpp: $(TILESETDIR)/secondary/sootopolis/tiles.png
- $(GFX) $< $@ -num_tiles 180
-
-$(TILESETDIR)/primary/building/tiles.4bpp: $(TILESETDIR)/primary/building/tiles.png
- $(GFX) $< $@ -num_tiles 502
-
-$(TILESETDIR)/secondary/shop/tiles.4bpp: $(TILESETDIR)/secondary/shop/tiles.png
- $(GFX) $< $@ -num_tiles 502
-
-$(TILESETDIR)/secondary/pokemon_center/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_center/tiles.png
- $(GFX) $< $@ -num_tiles 478
-
-$(TILESETDIR)/secondary/cave/tiles.4bpp: $(TILESETDIR)/secondary/cave/tiles.png
- $(GFX) $< $@ -num_tiles 420
-
-$(TILESETDIR)/secondary/pokemon_school/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_school/tiles.png
- $(GFX) $< $@ -num_tiles 278
-
-$(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_fan_club/tiles.png
- $(GFX) $< $@ -num_tiles 319
-
-$(TILESETDIR)/secondary/unused_1/tiles.4bpp: $(TILESETDIR)/secondary/unused_1/tiles.png
- $(GFX) $< $@ -num_tiles 17
-
-$(TILESETDIR)/secondary/meteor_falls/tiles.4bpp: $(TILESETDIR)/secondary/meteor_falls/tiles.png
- $(GFX) $< $@ -num_tiles 422
-
-$(TILESETDIR)/secondary/oceanic_museum/tiles.4bpp: $(TILESETDIR)/secondary/oceanic_museum/tiles.png
- $(GFX) $< $@ -num_tiles 319
-
-$(TILESETDIR)/secondary/cable_club/unknown_tiles.4bpp: $(TILESETDIR)/secondary/cable_club/unknown_tiles.png
- $(GFX) $< $@ -num_tiles 120
-
-$(TILESETDIR)/secondary/seashore_house/tiles.4bpp: $(TILESETDIR)/secondary/seashore_house/tiles.png
- $(GFX) $< $@ -num_tiles 312
-
-$(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp: $(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.png
- $(GFX) $< $@ -num_tiles 345
-
-$(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp: $(TILESETDIR)/secondary/pokemon_day_care/tiles.png
- $(GFX) $< $@ -num_tiles 355
-
-$(TILESETDIR)/secondary/facility/tiles.4bpp: $(TILESETDIR)/secondary/facility/tiles.png
- $(GFX) $< $@ -num_tiles 503
-
-$(TILESETDIR)/secondary/secret_base/brown_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/brown_cave/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/secret_base/tree/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/tree/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/secret_base/shrub/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/shrub/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/secret_base/blue_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/blue_cave/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/secret_base/red_cave/tiles.4bpp: $(TILESETDIR)/secondary/secret_base/red_cave/tiles.png
- $(GFX) $< $@ -num_tiles 83
-
-$(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp: $(TILESETDIR)/secondary/inside_of_truck/tiles.png
- $(GFX) $< $@ -num_tiles 62
-
-$(TILESETDIR)/secondary/contest/tiles.4bpp: $(TILESETDIR)/secondary/contest/tiles.png
- $(GFX) $< $@ -num_tiles 430
-
-$(TILESETDIR)/secondary/lilycove_museum/tiles.4bpp: $(TILESETDIR)/secondary/lilycove_museum/tiles.png
- $(GFX) $< $@ -num_tiles 431
-
-$(TILESETDIR)/secondary/lab/tiles.4bpp: $(TILESETDIR)/secondary/lab/tiles.png
- $(GFX) $< $@ -num_tiles 500
-
-$(TILESETDIR)/secondary/underwater/tiles.4bpp: $(TILESETDIR)/secondary/underwater/tiles.png
- $(GFX) $< $@ -num_tiles 500
-
-$(TILESETDIR)/secondary/generic_building/tiles.4bpp: $(TILESETDIR)/secondary/generic_building/tiles.png
- $(GFX) $< $@ -num_tiles 509
-
-$(TILESETDIR)/secondary/mauville_game_corner/tiles.4bpp: $(TILESETDIR)/secondary/mauville_game_corner/tiles.png
- $(GFX) $< $@ -num_tiles 469
-
-$(TILESETDIR)/secondary/unused_2/tiles.4bpp: $(TILESETDIR)/secondary/unused_2/tiles.png
- $(GFX) $< $@ -num_tiles 150
-
-$(TILESETDIR)/secondary/rustboro_gym/tiles.4bpp: $(TILESETDIR)/secondary/rustboro_gym/tiles.png
- $(GFX) $< $@ -num_tiles 94
-
-$(TILESETDIR)/secondary/dewford_gym/tiles.4bpp: $(TILESETDIR)/secondary/dewford_gym/tiles.png
- $(GFX) $< $@ -num_tiles 88
-
-$(TILESETDIR)/secondary/lavaridge_gym/tiles.4bpp: $(TILESETDIR)/secondary/lavaridge_gym/tiles.png
- $(GFX) $< $@ -num_tiles 70
-
-$(TILESETDIR)/secondary/fortree_gym/tiles.4bpp: $(TILESETDIR)/secondary/fortree_gym/tiles.png
- $(GFX) $< $@ -num_tiles 84
-
-$(TILESETDIR)/secondary/mossdeep_gym/tiles.4bpp: $(TILESETDIR)/secondary/mossdeep_gym/tiles.png
- $(GFX) $< $@ -num_tiles 122
-
-$(TILESETDIR)/secondary/sootopolis_gym/tiles.4bpp: $(TILESETDIR)/secondary/sootopolis_gym/tiles.png
- $(GFX) $< $@ -num_tiles 484
-
-$(TILESETDIR)/secondary/trick_house_puzzle/tiles.4bpp: $(TILESETDIR)/secondary/trick_house_puzzle/tiles.png
- $(GFX) $< $@ -num_tiles 255
-
-$(TILESETDIR)/secondary/ship/tiles.4bpp: $(TILESETDIR)/secondary/ship/tiles.png
- $(GFX) $< $@ -num_tiles 342
-
-$(TILESETDIR)/secondary/elite_four/tiles.4bpp: $(TILESETDIR)/secondary/elite_four/tiles.png
- $(GFX) $< $@ -num_tiles 505
+$(TILESETDIR)/secondary/petalburg/tiles.4bpp: GFX_OPTS := -num_tiles 159
+$(TILESETDIR)/secondary/rustboro/tiles.4bpp: GFX_OPTS := -num_tiles 498
+$(TILESETDIR)/secondary/dewford/tiles.4bpp: GFX_OPTS := -num_tiles 343
+$(TILESETDIR)/secondary/slateport/tiles.4bpp: GFX_OPTS := -num_tiles 504
+$(TILESETDIR)/secondary/mauville/tiles.4bpp: GFX_OPTS := -num_tiles 450
+$(TILESETDIR)/secondary/lavaridge/tiles.4bpp: GFX_OPTS := -num_tiles 348
+$(TILESETDIR)/secondary/fallarbor/tiles.4bpp: GFX_OPTS := -num_tiles 374
+$(TILESETDIR)/secondary/fortree/tiles.4bpp: GFX_OPTS := -num_tiles 493
+$(TILESETDIR)/secondary/mossdeep/tiles.4bpp: GFX_OPTS := -num_tiles 499
+$(TILESETDIR)/secondary/pacifidlog/tiles.4bpp: GFX_OPTS := -num_tiles 504
+$(TILESETDIR)/secondary/sootopolis/tiles.4bpp: GFX_OPTS := -num_tiles 180
+$(TILESETDIR)/primary/building/tiles.4bpp: GFX_OPTS := -num_tiles 502
+$(TILESETDIR)/secondary/shop/tiles.4bpp: GFX_OPTS := -num_tiles 502
+$(TILESETDIR)/secondary/pokemon_center/tiles.4bpp: GFX_OPTS := -num_tiles 478
+$(TILESETDIR)/secondary/cave/tiles.4bpp: GFX_OPTS := -num_tiles 420
+$(TILESETDIR)/secondary/pokemon_school/tiles.4bpp: GFX_OPTS := -num_tiles 278
+$(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp: GFX_OPTS := -num_tiles 319
+$(TILESETDIR)/secondary/unused_1/tiles.4bpp: GFX_OPTS := -num_tiles 17
+$(TILESETDIR)/secondary/meteor_falls/tiles.4bpp: GFX_OPTS := -num_tiles 422
+$(TILESETDIR)/secondary/oceanic_museum/tiles.4bpp: GFX_OPTS := -num_tiles 319
+$(TILESETDIR)/secondary/cable_club/unknown_tiles.4bpp: GFX_OPTS := -num_tiles 120
+$(TILESETDIR)/secondary/seashore_house/tiles.4bpp: GFX_OPTS := -num_tiles 312
+$(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp: GFX_OPTS := -num_tiles 345
+$(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp: GFX_OPTS := -num_tiles 355
+$(TILESETDIR)/secondary/facility/tiles.4bpp: GFX_OPTS := -num_tiles 503
+$(TILESETDIR)/secondary/secret_base/brown_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/secret_base/tree/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/secret_base/shrub/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/secret_base/blue_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/secret_base/red_cave/tiles.4bpp: GFX_OPTS := -num_tiles 83
+$(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp: GFX_OPTS := -num_tiles 62
+$(TILESETDIR)/secondary/contest/tiles.4bpp: GFX_OPTS := -num_tiles 430
+$(TILESETDIR)/secondary/lilycove_museum/tiles.4bpp: GFX_OPTS := -num_tiles 431
+$(TILESETDIR)/secondary/lab/tiles.4bpp: GFX_OPTS := -num_tiles 500
+$(TILESETDIR)/secondary/underwater/tiles.4bpp: GFX_OPTS := -num_tiles 500
+$(TILESETDIR)/secondary/generic_building/tiles.4bpp: GFX_OPTS := -num_tiles 509
+$(TILESETDIR)/secondary/mauville_game_corner/tiles.4bpp: GFX_OPTS := -num_tiles 469
+$(TILESETDIR)/secondary/unused_2/tiles.4bpp: GFX_OPTS := -num_tiles 150
+$(TILESETDIR)/secondary/rustboro_gym/tiles.4bpp: GFX_OPTS := -num_tiles 94
+$(TILESETDIR)/secondary/dewford_gym/tiles.4bpp: GFX_OPTS := -num_tiles 88
+$(TILESETDIR)/secondary/lavaridge_gym/tiles.4bpp: GFX_OPTS := -num_tiles 70
+$(TILESETDIR)/secondary/fortree_gym/tiles.4bpp: GFX_OPTS := -num_tiles 84
+$(TILESETDIR)/secondary/mossdeep_gym/tiles.4bpp: GFX_OPTS := -num_tiles 122
+$(TILESETDIR)/secondary/sootopolis_gym/tiles.4bpp: GFX_OPTS := -num_tiles 484
+$(TILESETDIR)/secondary/trick_house_puzzle/tiles.4bpp: GFX_OPTS := -num_tiles 255
+$(TILESETDIR)/secondary/ship/tiles.4bpp: GFX_OPTS := -num_tiles 342
+$(TILESETDIR)/secondary/elite_four/tiles.4bpp: GFX_OPTS := -num_tiles 505
# reproduce overflow quirk
-
$(TILESETDIR)/secondary/pokemon_school/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_school/tiles.4bpp
- $(GFX) $< $@ -overflow 10
+ $(GBAGFX) $< $@ -overflow 10
$(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_fan_club/tiles.4bpp
- $(GFX) $< $@ -overflow 12
+ $(GBAGFX) $< $@ -overflow 12
$(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp.lz: $(TILESETDIR)/secondary/pretty_petal_flower_shop/tiles.4bpp
- $(GFX) $< $@ -overflow 8
+ $(GBAGFX) $< $@ -overflow 8
$(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp.lz: $(TILESETDIR)/secondary/pokemon_day_care/tiles.4bpp
- $(GFX) $< $@ -overflow 14
+ $(GBAGFX) $< $@ -overflow 14
$(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp.lz: $(TILESETDIR)/secondary/inside_of_truck/tiles.4bpp
- $(GFX) $< $@ -overflow 10
+ $(GBAGFX) $< $@ -overflow 10
$(TILESETDIR)/secondary/battle_tower/tiles.4bpp.lz: $(TILESETDIR)/secondary/battle_tower/tiles.4bpp
- $(GFX) $< $@ -overflow 16
+ $(GBAGFX) $< $@ -overflow 16
# unused copies of secret base tiles
$(TILESETDIR)/secondary/secret_base/brown_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/brown_cave/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82
$(TILESETDIR)/secondary/secret_base/tree/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/tree/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82
$(TILESETDIR)/secondary/secret_base/shrub/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/shrub/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82
$(TILESETDIR)/secondary/secret_base/blue_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/blue_cave/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82
$(TILESETDIR)/secondary/secret_base/yellow_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/yellow_cave/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82
$(TILESETDIR)/secondary/secret_base/red_cave/unused_tiles.4bpp: $(TILESETDIR)/secondary/secret_base/red_cave/tiles.png
- $(GFX) $< $@ -num_tiles 82
+ $(GBAGFX) $< $@ -num_tiles 82